

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# Amazon Redshift のインフラストラクチャセキュリティ
<a name="security-network-isolation"></a>

マネージドサービスである Amazon Redshift は AWS グローバルネットワークセキュリティで保護されています。AWS セキュリティサービスと AWS がインフラストラクチャを保護する方法については「[AWS クラウドセキュリティ](https://aws.amazon.com/security/)」を参照してください。インフラストラクチャセキュリティのベストプラクティスを使用して AWS 環境を設計するには「*セキュリティの柱 - AWS 適切なアーキテクチャを備えたフレームワーク*」の「[インフラストラクチャの保護](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)」を参照してください。

AWS が公開した API コールを使用して、ネットワーク経由で Amazon Redshift にアクセスします。クライアントは以下をサポートする必要があります。
+ Transport Layer Security (TLS)。TLS 1.2 が必須で、TLS 1.3 をお勧めします。
+ DHE (楕円ディフィー・ヘルマン鍵共有) や ECDHE (楕円曲線ディフィー・ヘルマン鍵共有) などの完全前方秘匿性 (PFS) による暗号スイート。これらのモードは Java 7 以降など、ほとんどの最新システムでサポートされています。

## ネットワークの隔離
<a name="network-isolation"></a>

Amazon VPC サービスに基づく 仮想プライベートクラウド (VPC) は、AWS クラウド内の論理的に隔離された領域にあるプライベートネットワークです。以下の手順を実行して、VPC 内に Amazon Redshift クラスターまたは Redshift Serverless ワークグループをデプロイできます。
+ AWS リージョンに VPC を作成します。詳細については、*Amazon VPC ユーザーガイド*の [Amazon VPC とは](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html)を参照してください。
+ 2 つ以上のプライベート VPC サブネットを作成します。詳細については、*Amazon VPC ユーザーガイド*の [VPC とサブネット](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)を参照してください。
+ Amazon Redshift クラスターまたは Redshift Serverless ワークグループをデプロイします。詳細については「[Redshift リソースのサブネット](working-with-cluster-subnet-groups.md)」または「[ワークグループと名前空間](serverless-workgroup-namespace.md)」を参照してください。

Amazon Redshift クラスターは、プロビジョニング時にデフォルトでロックされます。Amazon Redshift クライアントからのインバウンドネットワークトラフィックを許可するには、VPC セキュリティグループを Amazon Redshift クラスターに関連付けます。詳細については、「[Redshift リソースのサブネット](working-with-cluster-subnet-groups.md)」を参照してください。

特定の IP アドレス範囲へのトラフィックまたは特定の IP アドレス範囲からのトラフィックのみを許可するには、VPC を使用してセキュリティグループを更新します。一例として、企業ネットワークからのトラフィックまたは企業ネットワークへのトラフィックのみを許可する場合があります。

Amazon Redshift クラスターがタグ付けされているサブネットに関連付けられたネットワークアクセスコントロールリストを設定する際には、それぞれの AWS リージョンの S3 CIDR 範囲が、イングレスルールとエグレスルールの両方で許可リストに追加されていることを確認します。これにより、Redshift Spectrum、COPY、UNLOAD などの S3 ベースの操作を中断なく実行できます。

以下のコマンド例では、us-east-1 リージョンの Amazon S3 で使用されるすべての IPv4 アドレスに対して JSON レスポンスを解析します。

```
curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-east-1") | select(.service=="S3") | .ip_prefix'

54.231.0.0/17

52.92.16.0/20

52.216.0.0/15
```

特定のリージョンの S3 IP 範囲を取得する方法については、「[AWS IP アドレスの範囲](https://docs.aws.amazon.com/general/latest/gr/aws-ip-ranges.html)」を参照してください。

Amazon Redshift は、専用テナンシー VPC へのクラスターのデプロイをサポートしています。詳細については、*Amazon EC2 ユーザーガイド*の[ハードウェア専有インスタンス](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-instance.html)を参照してください。

## Amazon Redshift セキュリティグループ
<a name="working-with-security-groups"></a>

Amazon Redshift クラスターをプロビジョニングすると、デフォルトではロックされているため、誰もアクセスすることはできません。他のユーザーに Amazon Redshift クラスターへのインバウンドアクセスを許可するには、クラスターをセキュリティグループに関連付けます。EC2-VPC プラットフォームを使用する場合は、既存の Amazon VPC セキュリティグループを使用するか、新しいグループを定義してクラスターに関連付けることができます。EC2-VPC プラットフォームでのクラスターの管理の詳細については、「[VPC での Redshift リソース](managing-clusters-vpc.md)」を参照してください。

## インターフェイス VPC エンドポイント
<a name="security-private-link"></a>

インターネット経由で接続するのではなく、仮想プライベートクラウド (VPC) のインターフェイス VPC エンドポイント (AWS PrivateLink) を通じて Amazon Redshift および Amazon Redshift Serverless API のサービスに直接接続できます。Amazon Redshift API アクションの詳細については、*Amazon Redshift API リファレンス*から[アクション](https://docs.aws.amazon.com/redshift/latest/APIReference/API_Operations.html)を参照してください。Redshift Serverless API アクションの詳細については、「Amazon Redshift Serverless API リファレンス」の「[アクション](https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_Operations.html)」を参照してください。**AWS PrivateLink の詳細については、*Amazon VPC ユーザーガイド*の「[インターフェイス VPC エンドポイント (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)」を参照してください。クラスターまたはワークスペースへの JDBC/ODBC 接続は、Amazon Redshift API サービスの一部ではないことに注意してください。

インターフェイス VPC エンドポイントを使用すると、VPC と Amazon Redshift または Redshift Serverlessの間の通信は完全に AWS ネットワーク内で実施されるため、セキュリティが強化されます。各 VPC エンドポイントは、VPC サブネット内の 1 つ以上の Elastic Network Interface とプライベート IP アドレスで表されます。Elastic Network Interface の詳細については、*Amazon EC2 ユーザーガイド*の「[Elastic Network Interface](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)」を参照してください。

インターフェイス VPC エンドポイントは、VPC を Amazon Redshift に直接接続します。インターネットゲートウェイ、ネットワークアドレス変換 (NAT) デバイス、仮想プライベートネットワーク (VPN) 接続、または Direct Connect 接続は使用されません。VPC のインスタンスは、パブリック IP アドレスがなくても Amazon Redshift API と通信できます。

VPC を介して Amazon Redshift または Redshift Serverless を使用するには、2 つの方法があります。1 つは、VPC 内のインスタンスから接続することです。もう 1 つの方法として、Site-to-Site VPN オプションまたは Direct Connect を使用して、プライベートネットワークを VPC に接続する方法があります。Site-to-Site VPN オプションの詳細については、*Amazon VPC ユーザーガイド*の「[VPN 接続](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html)」を参照してください。Direct Connect の詳細については、*Direct Connect ユーザーガイド*の「[コネクションの作成](https://docs.aws.amazon.com/directconnect/latest/UserGuide/create-connection.html)」を参照してください。

インターフェイス VPC エンドポイントを作成し、AWS マネジメントコンソール か AWS Command Line Interface (AWS CLI) コマンドのいずれかを使用して、Amazon Redshift に接続できます。詳細については、「[インターフェイスエンドポイントの作成](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpce-interface.html#create-interface-endpoint)」を参照してください。

インターフェイス VPC エンドポイントを作成した後、エンドポイントのプライベート DNS ホスト名を有効にできます。その場合、デフォルトのエンドポイントは次のとおりです。
+ **Amazon Redshift でプロビジョニングされた場合**: `https://redshift.Region.amazonaws.com`
+ **Amazon Redshift Serverless**: `https://redshift-serverless.Region.amazonaws.com`

プライベート DNS ホスト名を有効にしない場合は、Amazon VPC が以下の形式で使用できる DNS エンドポイント名を提供します。
+ **Amazon Redshift でプロビジョニングされた場合**: `VPC_endpoint_ID.redshift.Region.vpce.amazonaws.com`
+ **Amazon Redshift Serverless**: `VPC_endpoint_ID.redshift-serverless.Region.vpce.amazonaws.com`

詳細については、*Amazon VPC ユーザーガイド*の「[インターフェイス VPC エンドポイント (AWS PrivateLink) ](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)」を参照してください。

Amazon Redshift および Redshift Serverless は、VPC 内のすべての [Amazon Redshift API オペレーション](https://docs.aws.amazon.com/redshift/latest/APIReference/API_Operations.html)と [Redshift Serverless API オペレーション](https://docs.aws.amazon.com/redshift-serverless/latest/APIReference/API_Operations.html)の呼び出しをサポートしています。

VPC エンドポイントポリシーを VPC エンドポイントにアタッチして、AWS Identity and Access Management (IAM) プリンシパルのアクセスを制御できます。また、セキュリティグループを VPC エンドポイントに関連付けて、ネットワークトラフィックの送信元と送信先に基づいてインバウンドとアウトバウンドのアクセスを制御することもできます。IP アドレスの例はです。詳細については、*Amazon VPC ユーザーガイド*の [VPC エンドポイントによるサービスのアクセスコントロール](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)を参照してください。

### Amazon Redshift 向け VPC エンドポイントポリシー
<a name="security-private-link-vpc_endpoint-policy"></a>

Amazon Redshift VPC エンドポイントのポリシーを作成できます。このポリシーでは以下を指定します。
+ アクションを実行できるプリンシパルまたは実行できないプリンシパル
+ 実行可能なアクション
+ アクションを実行できるリソース

詳細については、*Amazon VPC ユーザーガイド*の「[VPC エンドポイントによるサービスのアクセスコントロール](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)」を参照してください。

以下に、VPC エンドポイントポリシーの例を示します。

#### Amazon Redshift プロビジョンドエンドポイントポリシーの例
<a name="security-private-link-examples-provisioned"></a>

以下に、Amazon Redshift Provisioned の VPC エンドポイントポリシーの例を示します。

##### 例: 指定した AWS アカウントからのすべてのアクセスを拒否する VPC エンドポイントポリシー
<a name="security-private-link-example-1"></a>

次の VPC エンドポイントポリシーは、AWS アカウント `123456789012` からリソースへのエンドポイントを使用したすべてのアクセスを拒否します。

```
{
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Principal": "*"
        },
        {
            "Action": "*",
            "Effect": "Deny",
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "123456789012"
                ]
            }
        }
    ]
}
```

##### 例: 指定した IAM ロールにのみ VPC へのアクセスを許可する VPC エンドポイントポリシー
<a name="security-private-link-example-1.1"></a>

次の VPC エンドポイントポリシーは、AWS アカウント *123456789012* の IAM ロール *`redshiftrole`* にのみフルアクセスを許可します。他のすべての IAM プリンシパルは、エンドポイントを使用したアクセスを拒否されます。

```
   {
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::123456789012:role/redshiftrole"
                ]
            }
        }]
}
```

これはサンプルのみです。ほとんどのユースケースでは、特定のアクションにアクセス許可を付与してアクセス許可の範囲を狭めることをお勧めします。

##### 例: 指定した IAM プリンシパル (ユーザー) への VPC アクセスのみを許可する VPC エンドポイントポリシー
<a name="security-private-link-example-2"></a>

次の VPC エンドポイントポリシーは、AWS アカウント *123456789012* の IAM ユーザー *`redshiftadmin`* にのみフルアクセスを許可します。他のすべてのプリンシパルは、エンドポイントを使用したアクセスを拒否されます。

```
   {
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::123456789012:user/redshiftadmin"
                ]
            }
        }]
}
```

これはサンプルのみです。ほとんどのユースケースでは、ユーザーにロールを割り当てる前にロールにアクセス許可をアタッチすることをお勧めします。また、特定のアクションを使用してアクセス許可の範囲を狭めることをお勧めします。

##### 例: 読み取り専用の Amazon Redshift オペレーションを許可する VPC エンドポイントポリシー
<a name="security-private-link-example-3"></a>

次の VPC エンドポイントポリシーは、AWS アカウント *`123456789012`* にのみ、指定された Amazon Redshift アクションの実行を許可します。

指定されたアクションは、Amazon Redshift の読み込み専用アクセスに相当します。指定されたアカウントでは、VPC 上の他のすべてのアクションが拒否されます。他のすべてのアカウントは、すべてのアクセスを拒否されます。Amazon Redshift アクションのリストを表示するには、「*IAM ユーザーガイド*」の「[Amazon Redshift のアクション、リソース、および条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonredshift.html)」を参照してください。

```
  {
    "Statement": [
        {
            "Action": [
                "redshift:DescribeAccountAttributes",
                "redshift:DescribeClusterParameterGroups",
                "redshift:DescribeClusterParameters",
                "redshift:DescribeClusterSecurityGroups",
                "redshift:DescribeClusterSnapshots",
                "redshift:DescribeClusterSubnetGroups",
                "redshift:DescribeClusterVersions",
                "redshift:DescribeDefaultClusterParameters",
                "redshift:DescribeEventCategories",
                "redshift:DescribeEventSubscriptions",
                "redshift:DescribeHsmClientCertificates",
                "redshift:DescribeHsmConfigurations",
                "redshift:DescribeLoggingStatus",
                "redshift:DescribeOrderableClusterOptions",
                "redshift:DescribeQuery",
                "redshift:DescribeReservedNodeOfferings",
                "redshift:DescribeReservedNodes",
                "redshift:DescribeResize",
                "redshift:DescribeSavedQueries",
                "redshift:DescribeScheduledActions",
                "redshift:DescribeSnapshotCopyGrants",
                "redshift:DescribeSnapshotSchedules",
                "redshift:DescribeStorage",
                "redshift:DescribeTable",
                "redshift:DescribeTableRestoreStatus",
                "redshift:DescribeTags",
                "redshift:FetchResults",
                "redshift:GetReservedNodeExchangeOfferings"            
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "123456789012"
                ]
            }
        }
    ]
}
```

##### 例: 指定したクラスターへのアクセスを拒否する VPC エンドポイントポリシー
<a name="security-private-link-example-4"></a>

次の VPC エンドポイントポリシーは、すべてのアカウントとプリンシパルのフルアクセスを許可します。同時に、クラスター ID `my-redshift-cluster` の Amazon Redshift クラスターで実行されたアクションへの AWS アカウント *`123456789012`* のアクセスを拒否します。クラスターのリソースレベルのアクセス許可をサポートしないその他の Amazon Redshift アクションは、引き続き許可されます。Amazon Redshift アクションおよび対応するリソースタイプのリストについては、「*IAM ユーザーガイド*」の「[Amazon Redshift のアクション、リソース、および条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonredshift.html)」を参照してください。

```
 {
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Principal": "*"
        },
        {
            "Action": "*",
            "Effect": "Deny",
            "Resource": "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster",
            "Principal": {
                "AWS": [
                    "123456789012"
                ]
            }
        }
    ]
}
```

#### Amazon Redshift Serverless エンドポイントポリシーの例
<a name="security-private-link-examples-serverless"></a>

以下に、Redshift Serverless の VPC エンドポイントポリシーの例を示します。

##### 例: 読み取り専用の Redshift Serverless オペレーションを許可する VPC エンドポイントポリシー
<a name="security-private-link-serverless-example-1"></a>

次の VPC エンドポイントポリシーは、AWS アカウント *`123456789012`* にのみ、指定された Redshift Serverless アクションの実行を許可します。

指定されたアクションは、Redshift Serverless の読み込み専用アクセスに相当します。指定されたアカウントでは、VPC 上の他のすべてのアクションが拒否されます。他のすべてのアカウントは、すべてのアクセスを拒否されます。Redshift Serverless アクションのリストを表示するには、「IAM ユーザーガイド」の「[Redshift Serverless のアクション、リソース、および条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonredshiftserverless.html)」を参照してください。**

```
  {
    "Statement": [
        {
            "Action": [
                "redshift-serverless:DescribeOneTimeCredit",
                "redshift-serverless:GetCustomDomainAssociation",
                "redshift-serverless:GetEndpointAccess",
                "redshift-serverless:GetNamespace",
                "redshift-serverless:GetRecoveryPoint",
                "redshift-serverless:GetResourcePolicy",
                "redshift-serverless:GetScheduledAction",
                "redshift-serverless:GetSnapshot",
                "redshift-serverless:GetTableRestoreStatus",
                "redshift-serverless:GetUsageLimit",
                "redshift-serverless:GetWorkgroup"
            ],
            "Effect": "Allow",
            "Resource": "*",
            "Principal": {
                "AWS": [
                    "123456789012"
                ]
            }
        }
    ]
}
```

##### 例: 指定したワークグループへのアクセスを拒否する VPC エンドポイントポリシー
<a name="security-private-link-serverless-example-2"></a>

次の VPC エンドポイントポリシーは、すべてのアカウントとプリンシパルのフルアクセスを許可します。同時に、ワークグループ ID `my-redshift-workgroup` の Amazon Redshift ワークグループで実行されたアクションへの AWS アカウント *`123456789012`* のアクセスを拒否します。ワークグループのリソースレベルのアクセス許可をサポートしないその他の Amazon Redshift アクションは、引き続き許可されます。Redshift Serverless アクションおよび対応するリソースタイプのリストについては、「IAM ユーザーガイド」の「[Redshift Serverless のアクション、リソース、および条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonredshiftserverless.html)」を参照してください。**

```
 {
    "Statement": [
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": "*",
            "Principal": "*"
        },
        {
            "Action": "*",
            "Effect": "Deny",
            "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup:my-redshift-workgroup",
            "Principal": {
                "AWS": [
                    "123456789012"
                ]
            }
        }
    ]
}
```