Amazon Redshift は、2025 年 11 月 1 日以降、新しい Python UDF の作成をサポートしなくなります。Python UDF を使用する場合は、その日付より前に UDF を作成してください。既存の Python UDF は引き続き通常どおり機能します。詳細については、ブログ記事
Amazon Redshift でのサービスにリンクされたロールの使用
Amazon Redshift は、AWS Identity and Access Management (IAM) サービスにリンクされたロールを使用しています。サービスにリンクされたロールは、Amazon Redshift に直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールは、Amazon Redshift によって事前定義されており、サービスがお客様の Amazon Redshift クラスターの代わりに AWS のサービスを呼び出すのに必要なアクセス許可がすべて含まれています。
サービスにリンクされたロールを使用することで、必要なアクセス許可を手動で追加する必要がなくなるため、Amazon Redshift の設定が簡単になります。このロールは、Amazon Redshift ユースケースにリンクされており、事前定義されたアクセス許可があります。Amazon Redshift のみがロールを引き受けることができ、サービスにリンクされたロールのみが事前定義されたアクセス権限のポリシーを使用できます。Amazon Redshift は、クラスターまたは Redshift マネージド VPC エンドポイントの初回作成時に、サービスリンクロールをアカウントに作成します。このサービスリンクロールは、アカウントで Amazon Redshift クラスターや Redshit マネージド VPC エンドポイントをすべて削除した後でのみ削除できます。これにより、Amazon Redshift リソースへの必要なアクセス許可を不注意に削除することがなくなり、リソースが保護されます。
Amazon Redshift では、これが利用可能なすべてのリージョンにおいて、サービスにリンクされたロールの使用がサポートされています。詳細については、 AWS リージョンとエンドポイントを参照してください。
サービスにリンクされたロールを利用可能なその他のサービスについては、「IAM と連携するAWS サービス」を開き、サービスにリンクされたロール 列が 「はい」 になっているサービスを参照してください。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、 はい リンクを選択します。
Amazon Redshift へのサービスにリンクされたロールのアクセス許可
Amazon Redshift が AWSServiceRoleForRedshift という名前のサービスにリンクされたロールを使用 – Amazon Redshift がユーザーに代わって AWS のサービスを呼び出すことを許可します。このサービスリンクロールは、マネージドポリシー AmazonRedshiftServiceLinkedRolePolicy
にアタッチされます。このポリシーの更新情報については、「Amazon Redshift の AWS 管理 (事前定義) ポリシー」を参照してください。
AWSServiceRoleForRedshift サービスにリンクされたロールは、 redshift.amazonaws.com
のみを信頼し、ロールを引き受けます。
AWSServiceRoleForRedshift サービスにリンクされたロールのアクセス権限ポリシーでは、Amazon Redshift はすべての関連リソースで以下のことを実行することができます。
-
ec2:DescribeVpcs
-
ec2:DescribeSubnets
-
ec2:DescribeNetworkInterfaces
-
ec2:DescribeAddress
-
ec2:AssociateAddress
-
ec2:DisassociateAddress
-
ec2:CreateNetworkInterface
-
ec2:DeleteNetworkInterface
-
ec2:ModifyNetworkInterfaceAttribute
-
ec2:CreateVpcEndpoint
-
ec2:DeleteVpcEndpoints
-
ec2:DescribeVpcEndpoints
-
ec2:ModifyVpcEndpoint
ec2:DescribeVpcAttribute
ec2:DescribeSecurityGroups
ec2:DescribeInternetGateways
ec2:DescribeSecurityGroupRules
ec2:DescribeAvailabilityZones
ec2:DescribeNetworkAcls
ec2:DescribeRouteTables
ec2:AssignIpv6Addresses
ec2:UnassignIpv6Addresses
ネットワークリソースに対するアクセス許可
次のアクセス許可では、セキュリティグループルールを作成して管理するためのアクションを Amazon EC2 で実行できます。これらのセキュリティグループおよびルールは、Amazon Redshift aws:RequestTag/Redshift
のリソースタグに厳密に関連付けられています。これにより、アクセス許可の範囲は特定の Amazon Redshift のリソースに制限されます。
ec2:CreateSecurityGroup
ec2:AuthorizeSecurityGroupEgress
ec2:AuthorizeSecurityGroupIngress
ec2:RevokeSecurityGroupEgress
ec2:RevokeSecurityGroupIngress
ec2:ModifySecurityGroupRules
ec2:DeleteSecurityGroup
Service Quotas のアクセス許可
次のアクセス許可により、呼び出し元は Service Quotas を取得できます。
servicequotas:GetServiceQuota
次の JSON フラグメントは、Service Quotas のアクションとリソーススコープを示しています。
{ "Sid": "ServiceQuotasToCheckCustomerLimits", "Effect": "Allow", "Action": [ "servicequotas:GetServiceQuota" ], "Resource": [ "arn:aws:servicequotas:*:*:ec2/L-0263D0A3", "arn:aws:servicequotas:*:*:vpc/L-29B6F2EB" ] }
クォータコードは次のとおりです。
L-0263D0A3 – EC2-VPC Elastic IP のクォータコード。
L-29B6F2EB – VPC あたりのインターフェイス VPC エンドポイントのクォータコード。
詳細については、「AWS サービスクォータ」を参照してください。
監査ログ記録のためのアクション
logs
プレフィックスとともにリストされたアクションは、監査ログ記録と関連機能と関係があります。具体的には、ロググループとログストリームの作成と管理に関連します。
-
logs:CreateLogGroup
-
logs:PutRetentionPolicy
-
logs:CreateLogStream
-
logs:PutLogEvents
-
logs:DescribeLogStreams
-
logs:GetLogEvents
次の JSON は、監査ログ記録用の Amazon Redshift に対する、アクションとリソースの範囲を示しています。
[ { "Sid": "EnableCreationAndManagementOfRedshiftCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:PutRetentionPolicy" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/redshift/*" ] }, { "Sid": "EnableCreationAndManagementOfRedshiftCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "logs:GetLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/redshift/*:log-stream:*" ] } ]
サービスリンクロールと、AWS での用途については、「サービスにリンクされたロールの使用」を参照してください。Amazon Redshift での特定のアクション、およびその他の IAM リソースの詳細については、「Amazon Redshift のアクション、リソース、および条件キー」を参照してください。
AWS Secrets Manager を使用して管理者認証情報を管理するためのアクション
secretsmanager
プレフィックス付きでリストされているアクションは、Amazon Redshift を使用して管理者認証情報を管理するためのものです。このようなアクションを実行すると、Amazon Redshift は AWS Secrets Manager を使用して、管理者認証情報シークレットの作成と管理を行います。
次の JSON は、AWS Secrets Manager で管理者認証情報を管理するための Amazon Redshift に対するアクションとリソースの範囲を示しています。
[ { "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:DeleteSecret", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecret", "secretsmanager:UpdateSecretVersionStage", "secretsmanager:RotateSecret" ], "Resource": [ "arn:aws:secretsmanager:*:*:secret:redshift!*" ], "Condition": { "StringEquals": { "secretsmanager:ResourceTag/aws:secretsmanager:owningService": "redshift" } } }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword" ], "Resource": "*" } ]
クラスターとサーバーレス名前空間を AWS Glue Data Catalog に登録するためのアクション
glue
というプレフィックスが付いたアクションは、プロビジョニング済みクラスターまたはサーバーレス名前空間の登録を通じて AWS Glue Data Catalog に作成されたカタログへのアクセスに関連しています。詳細については、「Amazon Redshift Database デベロッパーガイド」の「Apache Iceberg の Amazon Redshift との互換性」を参照してください。
次の JSON は、Amazon Redshift に対する、AWS Glue Data Catalog のカタログへのアクセスに関するアクションとリソースの範囲を示しています。
[ { "Sid": "DiscoverRedshiftCatalogs", "Effect": "Allow", "Action": [ "glue:GetCatalogs", "glue:GetCatalog" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:catalog/*" ], "Condition": { "Bool": { "glue:EnabledForRedshiftAutoDiscovery": "true" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "LakeFormationGetMetadataAccessForFederatedCatalogs", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": [ "*" ], "Condition": { "Bool": { "lakeformation:EnabledOnlyForMetaDataAccess":"true" }, "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" }, "ForAnyValue:StringEquals": { "aws:CalledVia": "glue.amazonaws.com" } } } } ]
glue:GetCatalog
および glue:GetCatalogs
アクセス許可には条件 glue:EnabledForRedshiftAutoDiscovery:true
があり、Amazon Redshift はカタログを自動的に検出するための IAM アクセスを付与します。オプトアウトするには、AWS Glue アカウントレベルのリソースポリシーを追加して、サービスにリンクされたロールのカタログへのアクセスを選択的に拒否します。サービスリンクロールにはポリシーに明示的な許可アクションがすでにあるため、オプトアウトポリシーはそのアクションを明示的に拒否する必要があります。追加のポリシーが Amazon Redshift の自動検出を拒否する次の例を考えてみましょう。
IAM エンティティが AWSServiceRoleForRedshift サービスにリンクされたロールを作成するには
{ "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "arn:aws:iam::
<AWS-account-ID>
:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift", "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}} }
IAM エンティティが AWSServiceRoleForRedshift サービスにリンクされたロールを削除するには
以下のポリシーステートメントを IAM エンティティのアクセス許可に追加します。
{ "Effect": "Allow", "Action": [ "iam:DeleteServiceLinkedRole", "iam:GetServiceLinkedRoleDeletionStatus" ], "Resource": "arn:aws:iam::
<AWS-account-ID>
:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift", "Condition": {"StringLike": {"iam:AWSServiceName": "redshift.amazonaws.com"}} }
または AWS 管理ポリシーを使用して、Amazon Redshift への フルアクセスを許可
Amazon Redshift のサービスにリンクされたロールの作成
AWSServiceRoleForRedshift サービスにリンクされたロールを手動で作成する必要はありません。Amazon Redshift は、お客様のサービスにリンクされたロールを作成します。AWSServiceRoleForRedshift サービスにリンクされたロールがアカウントより削除されている場合は、新しい Amazon Redshift クラスターを起動すると、Amazon Redshift によってロールが作成されます。
重要
2017 年 9 月 18 日より前に Amazon Redshift サービスを使用していた場合、サービスにリンクされたロールのサポートが開始された時点で、Amazon Redshift により AWSServiceRoleForRedshift ロールがアカウントに作成済されています。詳細についてはIAM アカウントに新しいロールが表示されるを参照してください。
Amazon Redshift のサービスにリンクされたロールの編集
Amazon Redshift では、サービスにリンクされたロールである AWSServiceRoleForRedshift を編集できません。サービスにリンクされたロールを作成すると、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、ロールの説明は IAM コンソール、AWS Command Line Interface (AWS CLI)、または IAM API を使用して編集することができます。詳細については、 IAM ユーザーガイドの ロールの変更 を参照してください。
Amazon Redshift のサービスにリンクされたロールの削除
サービスにリンクされたロールが必要な機能またはサービスが不要になった場合には、そのロールを削除することをお勧めします。そうすることで、使用していないエンティティがアクティブにモニタリングされたり、メンテナンスされたりすることがなくなります。
アカウントのサービスにリンクされたロールを削除するには、アカウントのクラスターをシャットダウンした上で削除する必要があります。詳細については、「クラスターのシャットダウンと削除」を参照してください。
サービスにリンクされたロールは、IAM コンソール、AWS CLI、 IAM API を使用して削除することができます。詳細については、 IAM ユーザーガイドの サービスにリンクされたロールの削除 を参照してください。