Amazon Redshift でのアイデンティティベースのポリシー (IAM ポリシー) の使用 - Amazon Redshift

Amazon Redshift でのアイデンティティベースのポリシー (IAM ポリシー) の使用

このトピックでは、アカウント管理者が IAM アイデンティティ (ユーザー、グループ、ロール)へのアクセス権限ポリシーをアタッチする、アイデンティティベースのポリシーの例を示します。

重要

初めに、Amazon Redshift のリソースへのアクセスを管理するための基本概念と使用できるオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「Amazon Redshift リソースに対するアクセス許可の管理の概要」を参照してください。

以下に示しているのは、アクセス権限ポリシーの例です。このポリシーでは、ユーザーはすべてのクラスターを作成、削除、変更、再起動できます。さらに、クラスター識別子が AWS リージョン us-west-2 および AWS アカウント 123456789012production で始まるクラスターを削除または変更するアクセス権限が拒否されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowClusterManagement", "Action": [ "redshift:CreateCluster", "redshift:DeleteCluster", "redshift:ModifyCluster", "redshift:RebootCluster" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid":"DenyDeleteModifyProtected", "Action": [ "redshift:DeleteCluster", "redshift:ModifyCluster" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:cluster:production*" ], "Effect": "Deny" } ] }

このポリシーには以下の 2 つのステートメントがあります。

  • 最初のステートメントでは、ユーザーがクラスターを作成、削除、変更、再起動するユーザーのアクセス権限を付与します。ステートメントでは、ワイルドカード文字 (*) が Resource 値として指定されます。そうすることで、ルート AWS アカウントが所有するすべての Amazon Redshift リソースにポリシーを適用できます。

  • 2 番目のステートメントでは、クラスターの削除または変更するアクセス権限を拒否します。ステートメントではワイルドカード文字 (*) が含まれる Resource 値のためにクラスター Amazon リソースネーム (ARN) を指定します。その結果、クラスター識別子が productionで始まり、ルート AWS アカウントが所有するすべての Amazon Redshift クラスターにこのステートメントが適用されます。

Amazon Redshift の AWS 管理ポリシー

AWS は、AWSによって作成され管理されるスタンドアロンの IAM ポリシーを提供することで、多くの一般的ユースケースに対応します。マネージドポリシーは、一般的ユースケースに必要な許可を付与することで、どの許可が必要なのかをユーザーが調査する必要をなくすることができます。詳細については、「IAM ユーザーガイド」の「AWS 管理ポリシー」を参照してください。

独自のカスタム IAM ポリシーを作成して、Amazon Redshift API オペレーションとリソースのためのアクセス権限を許可することもできます。これらのカスタムポリシーは、それらのアクセス許可が必要な IAM ロールまたはグループにアタッチできます。

次のセクションで、アカウント内のユーザーにアタッチでき、Amazon Redshift に固有の AWS 管理ポリシーについて説明します。

AmazonRedshiftReadOnlyAccess

AWS アカウントにあるすべての Amazon Redshift リソースに対する、読み取り専用のアクセス権を付与します。

AmazonRedshiftReadOnlyAccess ポリシーは IAM コンソールに、AmazonRedshiftReadOnlyAccessAWS管理ポリシーリファレンスガイドに記載されています。

AmazonRedshiftFullAccess

AWS アカウントの内のすべての Amazon Redshift リソースに対する、完全なアクセス権を付与します。さらに、このポリシーは全ての Amazon Redshift サーバーレスリソースへの完全なアクセスを許可します。

AmazonRedshiftFullAccess ポリシーは IAM コンソールに、AmazonRedshiftFullAccessAWS管理ポリシーリファレンスガイドに記載されています。

AmazonRedshiftQueryEditor

Amazon Redshift コンソールのクエリエディタへの、完全なアクセス権を付与します。

AmazonRedshiftQueryEditor ポリシーは IAM コンソールに、AmazonRedshiftQueryEditorAWS管理ポリシーリファレンスガイドに記載されています。

AmazonRedshiftDataFullAccess

AWS アカウントの Amazon Redshift Data API オペレーション、およびリソースに対する完全なアクセス権を付与します。

AmazonRedshiftDataFullAccess ポリシーは IAM コンソールに、AmazonRedshiftDataFullAccessAWS管理ポリシーリファレンスガイドに記載されています。

AmazonRedshiftQueryEditorV2FullAccess

Amazon Redshift クエリエディタ v2 のオペレーションとリソースに対する、完全なアクセス権を付与します。このポリシーは、その他の必要なサービスへのアクセス権限も付与します。

AmazonRedshiftQueryEditorV2FullAccess ポリシーは IAM コンソールにあり、AmazonRedshiftQueryEditorV2FullAccessAWSマネージドポリシーリファレンスガイドに記載されています。

AmazonRedshiftQueryEditorV2NoSharing

リソースを共有せずに Amazon Redshift クエリエディタ v2 を操作するための権限を付与します。このポリシーは、その他の必要なサービスへのアクセス権限も付与します。このポリシーを使用しているプリンシパルは、リソース (クエリなど)にタグ付けして、同じ AWS アカウントにあるその他のプリンシパルと共有することができません。

AmazonRedshiftQueryEditorV2NoSharing 禁止ポリシーは IAM コンソールに、AmazonRedshiftQueryEditorV2NoSharingAWSマネージドポリシーリファレンスガイドに記載されています。

AmazonRedshiftQueryEditorV2ReadSharing

限定されたリソースを共有しながら、Amazon Redshift クエリエディタ v2 を操作できる権限を付与します。このポリシーは、その他の必要なサービスへのアクセス権限も付与します。このポリシーを使用しているプリンシパルは、リソース (クエリなど)にタグ付けして、同じ AWS アカウントにあるその他のプリンシパルと共有することができます。付与されたプリンシパルは、チームと共有されているリソースの読み取りはできますが、更新はできません。

AmazonRedshiftQueryEditorV2ReadSharing ポリシーは IAM コンソールに、AmazonRedshiftQueryEditorV2ReadSharingAWS管理ポリシーリファレンスガイドに記載されています。

AmazonRedshiftQueryEditorV2ReadWriteSharing

リソースを共有して、Amazon Redshift クエリエディタ v2 を操作できる権限を付与します。このポリシーは、その他の必要なサービスへのアクセス権限も付与します。このポリシーを使用しているプリンシパルは、リソース (クエリなど)にタグ付けして、同じ AWS アカウントにあるその他のプリンシパルと共有することができます。付与されたプリンシパルは、そのチームと共有されているリソースを読み取り、更新することができます。

AmazonRedshiftQueryEditorV2ReadWriteSharing ポリシーは IAM コンソールに、AmazonRedshiftQueryEditorV2ReadWriteSharingAWS管理ポリシーリファレンスガイドに記載されています。

AmazonRedshiftServiceLinkedRolePolicy

IAM エンティティに AmazonRedshiftServiceLinkedRolePolicy をアタッチすることはできません。このポリシーは、Amazon Redshift がアカウントリソースにアクセスすることを許可する、サービスにリンクされたロールにアタッチされます。詳細については、「Amazon Redshift でのサービスにリンクされたロールの使用」を参照してください。

AmazonRedshiftServiceLinkedRolePolicy ポリシーは IAM コンソールに、AmazonRedshiftServiceLinkedRolePolicyAWS管理ポリシーリファレンスガイドに記載されています。

AmazonRedshiftAllCommandsFullAccess

Amazon Redshift コンソールから作成された IAM ロールを使用するための機能を付与します。このロールは、Amazon S3 からの COPY に加え、UNLOAD、CREATE EXTERNAL SCHEMA、CREATE EXTERNAL FUNCTION、および CREATE MODEL の各コマンドをクラスターが実行するためのデフォルトとして設定されす。同時にこのポリシーは、Amazon S3、CloudWatch Logs、Amazon SageMaker、または AWS Glue などの関連サービスで、SELECT ステートメントを実行することも許可します。

AmazonRedshiftAllCommandsFullAccess ポリシーは IAM コンソールに、AmazonRedshiftAllCommandsFullAccessAWS管理ポリシーリファレンスガイドに記載されています。

独自のカスタム IAM ポリシーを作成して、Amazon Redshift API オペレーションとリソースのためのアクセス権限を許可することもできます。これらのカスタムポリシーは、それらのアクセス許可が必要な IAM ロールまたはグループにアタッチできます。

Amazon Redshift での AWS 管理ポリシーに関する更新

Amazon Redshift で管理ポリシーの変更の追跡が開始されてからの分について、AWS 管理ポリシーの更新に関する詳細を表示します。このページの変更に関する自動アラートを入手するには、Amazon Redshift ドキュメントの履歴ページから、RSS フィードをサブスクライブしてください。

変更 説明 日付

AmazonRedshiftReadOnlyAccess - 既存ポリシーへの更新

管理ポリシーにアクション redshift:ListRecommendations に対するアクセス許可が追加されました。これにより、Amazon Redshift Advisor のレコメンデーションを一覧表示するアクセス許可が付与されます。

2024 年 2 月 7 日

AmazonRedshiftServiceLinkedRolePolicy – 既存ポリシーへの更新

アクション ec2:AssignIpv6Addresses および ec2:UnassignIpv6Addresses に対するアクセス許可が管理ポリシーに追加されました。これらを追加すると、IP アドレスの割り当てと割り当て解除を行うアクセス許可が付与されます。

2023 年 10 月 31 日

AmazonRedshiftQueryEditorV2NoSharing – 既存ポリシーへの更新

アクション sqlworkbench:GetAutocompletionMetadata および sqlworkbench:GetAutocompletionResource に対するアクセス許可が管理ポリシーに追加されました。これらを追加すると、クエリの編集中に SQL をオートコンプリートするためのデータベース情報を生成および取得する権限が付与されます。

2023 年 8 月 16 日

AmazonRedshiftQueryEditorV2ReadSharing – 既存ポリシーへの更新

アクション sqlworkbench:GetAutocompletionMetadata および sqlworkbench:GetAutocompletionResource に対するアクセス許可が管理ポリシーに追加されました。これらを追加すると、クエリの編集中に SQL をオートコンプリートするためのデータベース情報を生成および取得する権限が付与されます。

2023 年 8 月 16 日

AmazonRedshiftQueryEditorV2ReadWriteSharing – 既存ポリシーへの更新

アクション sqlworkbench:GetAutocompletionMetadata および sqlworkbench:GetAutocompletionResource に対するアクセス許可が管理ポリシーに追加されました。これらを追加すると、クエリの編集中に SQL をオートコンプリートするためのデータベース情報を生成および取得する権限が付与されます。

2023 年 8 月 16 日

AmazonRedshiftServiceLinkedRolePolicy – 既存ポリシーへの更新

シークレットを作成して管理するための AWS Secrets Manager のアクションのアクセス許可が管理ポリシーに追加されました。追加されたアクセス許可は、次のとおりです。

  • secretsmanager:GetRandomPassword

  • secretsmanager:DescribeSecret

  • secretsmanager:PutSecretValue

  • secretsmanager:UpdateSecret

  • secretsmanager:UpdateSecretVersionStage

  • secretsmanager:RotateSecret

  • secretsmanager:DeleteSecret

2023 年 8 月 14 日

AmazonRedshiftServiceLinkedRolePolicy – 既存ポリシーへの更新

セキュリティグループとルーティングルールの作成と管理のための Amazon EC2 でのアクションのアクセス許可がマネージドポリシーから削除されました。これらのアクセス許可は、サブネットと VPC の作成に関するものです。削除されたアクセス許可は以下の通りです。

  • ec2:AuthorizeSecurityGroupEgress

  • ec2:AuthorizeSecurityGroupIngress

  • ec2:UpdateSecurityGroupRuleDescriptionsEgress

  • ec2:ReplaceRouteTableAssociation

  • ec2:CreateRouteTable

  • ec2:AttachInternetGateway

  • ec2:UpdateSecurityGroupRuleDescriptionsIngress

  • ec2:AssociateRouteTable

  • ec2:RevokeSecurityGroupIngress

  • ec2:CreateRoute

  • ec2:CreateSecurityGroup

  • ec2:RevokeSecurityGroupEgress

  • ec2:ModifyVpcAttribute

  • ec2:CreateSubnet

  • ec2:CreateInternetGateway

  • ec2:CreateVpc

これらは、Purpose:RedshiftMigrateToVpc リソースタグと関連付けられていました。このタグは、Amazon EC2 Classic から Amazon EC2 VPC に移行するためのタスクに対するアクセス許可の範囲を制限しました。リソースタグの詳細については、「タグを使用した AWS リソースへのアクセスの制御」を参照してください。
2023 年 5 月 8 日

AmazonRedshiftDataFullAccess – 既存ポリシーへの更新

管理ポリシーにアクション redshift:GetClusterCredentialsWithIAM に対するアクセス許可が追加されました。指定された AWS アカウント によって Amazon Redshift データベースにアクセスするための詳細な一時的認証情報を取得する許可を付与します。

2023 年 4 月 7 日

AmazonRedshiftServiceLinkedRolePolicy – 既存ポリシーへの更新

セキュリティグループルールの作成と管理のための Amazon EC2 でのアクションの許可が管理ポリシーに追加されました。これらのセキュリティグループとルールは、明確に Amazon Redshift aws:RequestTag/Redshift リソースタグに関連付けられます。これにより、アクセス許可の範囲は特定の Amazon Redshift のリソースに制限されます。

2023 年 4 月 6 日

AmazonRedshiftQueryEditorV2NoSharing – 既存ポリシーへの更新

管理ポリシーにアクション sqlworkbench:GetSchemaInference に対するアクセス許可が追加されました。ファイルから推測される列とデータ型を取得する許可を付与します。

2023 年 3 月 21 日

AmazonRedshiftQueryEditorV2ReadSharing – 既存ポリシーへの更新

管理ポリシーにアクション sqlworkbench:GetSchemaInference に対するアクセス許可が追加されました。ファイルから推測される列とデータ型を取得する許可を付与します。

2023 年 3 月 21 日

AmazonRedshiftQueryEditorV2ReadWriteSharing – 既存ポリシーへの更新

管理ポリシーにアクション sqlworkbench:GetSchemaInference に対するアクセス許可が追加されました。ファイルから推測される列とデータ型を取得する許可を付与します。

2023 年 3 月 21 日

AmazonRedshiftQueryEditorV2NoSharing – 既存ポリシーへの更新

管理ポリシーにアクション sqlworkbench:AssociateNotebookWithTab に対するアクセス許可が追加されました。これを追加すると、ユーザー自身のノートブックにリンクされたタブを作成および更新する権限が付与されます。

2023 年 2 月 2 日

AmazonRedshiftQueryEditorV2ReadSharing – 既存ポリシーへの更新

管理ポリシーにアクション sqlworkbench:AssociateNotebookWithTab に対するアクセス許可が追加されました。これを追加すると、ユーザー自身のノートブックやユーザーと共有されているノートブックにリンクさごれたタブの作成と更新の権限が付与されます。

2023 年 2 月 2 日

AmazonRedshiftQueryEditorV2ReadWriteSharing – 既存ポリシーへの更新

管理ポリシーにアクション sqlworkbench:AssociateNotebookWithTab に対するアクセス許可が追加されました。これを追加すると、ユーザー自身のノートブックやユーザーと共有されているノートブックにリンクさごれたタブの作成と更新の権限が付与されます。

2023 年 2 月 2 日

AmazonRedshiftQueryEditorV2NoSharing – 既存ポリシーへの更新

ノートブックを使用するアクセス許可を付与するために、Amazon Redshift は次のアクションのアクセス許可を追加しました。

  • sqlworkbench:ListNotebooks

  • sqlworkbench:CreateNotebook

  • sqlworkbench:DuplicateNotebook

  • sqlworkbench:CreateNotebookFromVersion

  • sqlworkbench:ImportNotebook

  • sqlworkbench:GetNotebook

  • sqlworkbench:UpdateNotebook

  • sqlworkbench:DeleteNotebook

  • sqlworkbench:CreateNotebookCell

  • sqlworkbench:DeleteNotebookCell

  • sqlworkbench:UpdateNotebookCellContent

  • sqlworkbench:UpdateNotebookCellLayout

  • sqlworkbench:BatchGetNotebookCell

  • sqlworkbench:ListNotebookVersions

  • sqlworkbench:CreateNotebookVersion

  • sqlworkbench:GetNotebookVersion

  • sqlworkbench:DeleteNotebookVersion

  • sqlworkbench:RestoreNotebookVersion

  • sqlworkbench:ExportNotebook

2022 年 10 月 17 日

AmazonRedshiftQueryEditorV2ReadSharing – 既存ポリシーへの更新

ノートブックを使用するアクセス許可を付与するために、Amazon Redshift は次のアクションのアクセス許可を追加しました。

  • sqlworkbench:ListNotebooks

  • sqlworkbench:CreateNotebook

  • sqlworkbench:DuplicateNotebook

  • sqlworkbench:CreateNotebookFromVersion

  • sqlworkbench:ImportNotebook

  • sqlworkbench:GetNotebook

  • sqlworkbench:UpdateNotebook

  • sqlworkbench:DeleteNotebook

  • sqlworkbench:CreateNotebookCell

  • sqlworkbench:DeleteNotebookCell

  • sqlworkbench:UpdateNotebookCellContent

  • sqlworkbench:UpdateNotebookCellLayout

  • sqlworkbench:BatchGetNotebookCell

  • sqlworkbench:ListNotebookVersions

  • sqlworkbench:CreateNotebookVersion

  • sqlworkbench:GetNotebookVersion

  • sqlworkbench:DeleteNotebookVersion

  • sqlworkbench:RestoreNotebookVersion

  • sqlworkbench:ExportNotebook

2022 年 10 月 17 日

AmazonRedshiftQueryEditorV2ReadWriteSharing – 既存ポリシーへの更新

ノートブックを使用するアクセス許可を付与するために、Amazon Redshift は次のアクションのアクセス許可を追加しました。

  • sqlworkbench:ListNotebooks

  • sqlworkbench:CreateNotebook

  • sqlworkbench:DuplicateNotebook

  • sqlworkbench:CreateNotebookFromVersion

  • sqlworkbench:ImportNotebook

  • sqlworkbench:GetNotebook

  • sqlworkbench:UpdateNotebook

  • sqlworkbench:DeleteNotebook

  • sqlworkbench:CreateNotebookCell

  • sqlworkbench:DeleteNotebookCell

  • sqlworkbench:UpdateNotebookCellContent

  • sqlworkbench:UpdateNotebookCellLayout

  • sqlworkbench:BatchGetNotebookCell

  • sqlworkbench:ListNotebookVersions

  • sqlworkbench:CreateNotebookVersion

  • sqlworkbench:GetNotebookVersion

  • sqlworkbench:DeleteNotebookVersion

  • sqlworkbench:RestoreNotebookVersion

  • sqlworkbench:ExportNotebook

2022 年 10 月 17 日

AmazonRedshiftServiceLinkedRolePolicy – 既存ポリシーへの更新

Amazon Redshift は、CloudWatch にメトリクスを公開できるように名前空間 AWS/Redshift を追加しました。

2022 年 9 月 7 日

AmazonRedshiftQueryEditorV2NoSharing – 既存ポリシーへの更新

Amazon Redshift がアクション sqlworkbench:ListQueryExecutionHistorysqlworkbench:GetQueryExecutionHistory にアクセス許可を追加しました。これにより、クエリ履歴を表示するアクセス許可が付与されます。

2022 年 8 月 30 日

AmazonRedshiftQueryEditorV2ReadSharing – 既存ポリシーへの更新

Amazon Redshift がアクション sqlworkbench:ListQueryExecutionHistorysqlworkbench:GetQueryExecutionHistory にアクセス許可を追加しました。これにより、クエリ履歴を表示するアクセス許可が付与されます。

2022 年 8 月 30 日

AmazonRedshiftQueryEditorV2ReadWriteSharing – 既存ポリシーへの更新

Amazon Redshift がアクション sqlworkbench:ListQueryExecutionHistorysqlworkbench:GetQueryExecutionHistory にアクセス許可を追加しました。これにより、クエリ履歴を表示するアクセス許可が付与されます。

2022 年 8 月 30 日

AmazonRedshiftFullAccess – 既存ポリシーへの更新

Amazon Redshift サーバーレスのアクセス権限は、既存の AmazonRedshiftFullAccess マネージドポリシーに追加されます。

2022 年 7 月 22 日

AmazonRedshiftDataFullAccess – 既存ポリシーへの更新

Amazon Redshift は、タグキー RedshiftDataFullAccess や任意のタグ値でタグ付けされたリソースへのアクセスを許可するために、aws:ResourceTag/RedshiftDataFullAccess タグのアクセス権限で redshift-serverless:GetCredentials のデフォルトの適用条件を StringEquals から StringLike に更新しました。 2022 年 7 月 11 日

AmazonRedshiftDataFullAccess – 既存ポリシーへの更新

Amazon Redshift が新しいアクセス許可を追加し、Amazon Redshift サーバーレスへの一時的な認証情報に redshift-serverless:GetCredentials が許可されました。 2022 年 7 月 8 日

AmazonRedshiftQueryEditorV2NoSharing – 既存ポリシーへの更新

Amazon Redshift がアクション sqlworkbench:GetAccountSettings にアクセス許可を追加しました。これによりアカウント設定を取得するアクセス許可が付与されます。

2022 年 6 月 15 日

AmazonRedshiftQueryEditorV2ReadSharing – 既存ポリシーへの更新

Amazon Redshift がアクション sqlworkbench:GetAccountSettings にアクセス許可を追加しました。これによりアカウント設定を取得するアクセス許可が付与されます。

2022 年 6 月 15 日

AmazonRedshiftQueryEditorV2ReadWriteSharing – 既存ポリシーへの更新

Amazon Redshift がアクション sqlworkbench:GetAccountSettings にアクセス許可を追加しました。これによりアカウント設定を取得するアクセス許可が付与されます。

2022 年 6 月 15 日

AmazonRedshiftServiceLinkedRolePolicy – 既存ポリシーへの更新

新しい Amazon Redshift サーバーレスエンドポイントへのパブリックアクセスを有効にするため、Amazon Redshift ではカスタマーアカウントの VPC エンドポイントの Elastic ネットワークインターフェイスに Elastic IP アドレスを割り当てて、関連付けます。これは、サービスにリンクされたロールを介して提供される権限によって行われます。このユースケースを有効にするため、Elastic IP アドレスを割り当てて解放するアクションが Amazon Redshift サーバーレスのサービスにリンクされたロールに追加されます。

2022 年 5 月 26 日

AmazonRedshiftQueryEditorV2FullAccess – 既存ポリシーへの更新

アクション sqlworkbench:ListTaggedResources に対するアクセス許可。これは、Amazon Redshift クエリエディタ v2 のリソース専用に設定されています。このポリシーの更新により、クエリエディタ v2 からのみ tag:GetResources の呼び出しを行う権利が与えられます。

2022 年 2 月 22 日

AmazonRedshiftQueryEditorV2NoSharing – 既存ポリシーへの更新

アクション sqlworkbench:ListTaggedResources に対するアクセス許可。これは、Amazon Redshift クエリエディタ v2 のリソース専用に設定されています。このポリシーの更新により、クエリエディタ v2 からのみ tag:GetResources の呼び出しを行う権利が与えられます。

2022 年 2 月 22 日

AmazonRedshiftQueryEditorV2ReadSharing – 既存ポリシーへの更新

アクション sqlworkbench:ListTaggedResources に対するアクセス許可。これは、Amazon Redshift クエリエディタ v2 のリソース専用に設定されています。このポリシーの更新により、クエリエディタ v2 からのみ tag:GetResources の呼び出しを行う権利が与えられます。

2022 年 2 月 22 日

AmazonRedshiftQueryEditorV2ReadWriteSharing – 既存ポリシーへの更新

アクション sqlworkbench:ListTaggedResources に対するアクセス許可。これは、Amazon Redshift クエリエディタ v2 のリソース専用に設定されています。このポリシーの更新により、クエリエディタ v2 からのみ tag:GetResources の呼び出しを行う権利が与えられます。

2022 年 2 月 22 日

AmazonRedshiftQueryEditorV2ReadSharing – 既存ポリシーへの更新

管理ポリシーにアクション sqlworkbench:AssociateQueryWithTab に対するアクセス許可が追加されました。これにより、お客様は共有するクエリにリンクされたエディタタブを作成できます。

2022 年 2 月 22 日

AmazonRedshiftServiceLinkedRolePolicy – 既存ポリシーへの更新

Amazon Redshift に、Amazon Redshift ネットワークおよび VPC リソースの管理を有効化するための、新しいアクションに対するアクセス許可を追加しました。

2021 年 11 月 22 日

AmazonRedshiftAllCommandsFullAccess - 新しいポリシー

Amazon Redshift に、Amazon Redshift コンソールから作成された IAM ロールの使用を許可する新しいポリシーが追加されました。同時にこのポリシーを、Amazon S3 からの COPY、UNLOAD、CREATE EXTERNAL SCHEMA、CREATE EXTERNAL FUNCTION、CREATE MODEL、および CREATE LIBRARY の各コマンドを、クラスターが実行するためのデフォルトとして設定しました。

2021 年 11 月 18 日

AmazonRedshiftServiceLinkedRolePolicy – 既存ポリシーへの更新

Amazon Redshift に、監査ログのエクスポートを含む Amazon Redshift CloudWatch ロググループとログストリームの管理を有効化するための、新しいアクションに対するアクセス許可を追加しました。

2021 年 11 月 15 日

AmazonRedshiftFullAccess – 既存ポリシーへの更新

Amazon Redshift に、モデルの説明可能性、DynamoDB、Redshift Spectrum、および Amazon RDS フェデレーションを有効化するための、新しいアクセス許可を追加しました。 2021 年 10 月 7 日

AmazonRedshiftQueryEditorV2FullAccess - 新しいポリシー

Amazon Redshift では、Amazon Redshift クエリエディタ v2 へのフルアクセスを許可する新しいポリシーが追加されました。

2021 年 9 月 24 日

AmazonRedshiftQueryEditorV2NoSharing - 新しいポリシー

Amazon Redshift は、リソースを共有せずに Amazon Redshift クエリエディタ v2 を使用できるようにする新しいポリシーを追加しました。

2021 年 9 月 24 日

AmazonRedshiftQueryEditorV2ReadSharing - 新しいポリシー

Amazon Redshift は、Amazon Redshift クエリエディタ v2 での読み取り共有を許可する新しいポリシーを追加しました。

2021 年 9 月 24 日

AmazonRedshiftQueryEditorV2ReadWriteSharing - 新しいポリシー

Amazon Redshift は、Amazon Redshift クエリエディタ v2 での読み取りと更新の共有を許可する新しいポリシーを追加しました。

2021 年 9 月 24 日

AmazonRedshiftFullAccess – 既存ポリシーへの更新

Amazon Redshift が新しいアクセス許可を追加し、sagemaker:*Job*を許可しました。

2021 年 8 月 18 日

AmazonRedshiftDataFullAccess – 既存ポリシーへの更新

Amazon Redshift が新しいアクセス許可を追加し、AuthorizeDataShareを許可しました。

2021 年 8 月 12 日

AmazonRedshiftDataFullAccess – 既存ポリシーへの更新

Amazon Redshift が新しいアクセス許可を追加し、BatchExecuteStatementを許可しました。

2021 年 7 月 27 日

Amazon Redshift が変更の追跡を開始

Amazon Redshift が AWS 管理ポリシーの変更の追跡を開始しました。

2021 年 7 月 27 日

Redshift Spectrum を使用するために必要なアクセス許可

Amazon Redshift Spectrum には、リソースにアクセスするためのその他の AWS サービスへのアクセス許可が必要です。Redshift Spectrum での IAM ポリシーのアクセス許可の詳細については、「Amazon Redshift データベースデベロッパーガイド」から「Amazon Redshift Spectrum 用 IAM ポリシー」を参照してください。

Amazon Redshift コンソールの使用に必要なアクセス許可

Amazon Redshift コンソールを使用するユーザーは、AWS アカウントの Amazon Redshift リソースを記述できる最小限のアクセス許可のセットを持つ必要があります。また、それらのアクセス許可では、Amazon EC2 セキュリティ、Amazon CloudWatch、Amazon SNS、ネットワーク情報など、その他の関連情報の記述も許可される必要があります。

これらの最小限必要なアクセス権限よりも制限された IAM ポリシーを作成している場合、その IAM ポリシーを使用するユーザーに対してコンソールは意図したとおりには機能しません。これらのユーザーが引き続き Amazon Redshift コンソールを使用できるようにするには、AmazonRedshiftReadOnlyAccess 管理ポリシーもユーザーにアタッチしてください これを行う方法については、Amazon Redshift の AWS 管理ポリシーに記載されています。

Amazon Redshift コンソールのクエリエディタへのアクセス権をユーザーに付与するには、「Amazon Redshift コンソールのクエリエディタを使用するために必要なアクセス許可」を参照してください。

AWS CLI または Amazon Redshift API のみを呼び出すユーザーには、最小限のコンソールのアクセス許可を付与する必要はありません。

Amazon Redshift コンソールのクエリエディタを使用するために必要なアクセス許可

ユーザーが Amazon Redshift クエリエディタを操作するには、そのユーザーが Amazon Redshift および Amazon Redshift データ API オペレーションに対する最低限のアクセス権限を持っている必要があります。秘密を使用してデータベースに接続するには、Secrets Manager の権限も必要です。

ユーザーに Amazon Redshift コンソールのクエリエディタへのアクセス許可を付与するには、AmazonRedshiftQueryEditorAmazonRedshiftReadOnlyAccess AWS 管理ポリシーをアタッチします。AmazonRedshiftQueryEditor ポリシーでは、ユーザーが SQL ステートメントの結果のみを取得することを許可しています。つまり、AmazonRedshiftQueryEditor AWS 管理ポリシーのこのセクションに示されているのと同じ aws:userid によって送信されるステートメントです。

{ "Sid": "DataAPIIAMSessionPermissionsRestriction", "Action": [ "redshift-data:GetStatementResult", "redshift-data:CancelStatement", "redshift-data:DescribeStatement", "redshift-data:ListStatements" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "redshift-data:statement-owner-iam-userid": "${aws:userid}" } } }

ユーザーが同じ IAM ロール内の他のユーザーの SQL ステートメントの結果を取得できるようにするには、現在のユーザーへのアクセスを制限する条件を指定せずに、独自のポリシーを作成します。また、ポリシーを変更するためのアクセスを制限します。

クエリエディタv2 を使用するために必要なアクセス許可

ユーザーが Amazon Redshift クエリエディタ v2 を操作するには、そのユーザーが Amazon Redshift、クエリエディタ v2 オペレーションに対する最低限のアクセス権限を持っている必要があります。 AWS などのサービス AWS Key Management Service、AWS Secrets Manager、タグ付けサービスなどがあります。

ユーザーにクエリエディタ v2 へのフルアクセス権限を付与するには、AmazonRedshiftQueryEditorV2FullAccess AWS 管理ポリシーをアタッチします。AmazonRedshiftQueryEditorV2FullAccess ポリシーでは、クエリエディタ v2 リソース (クエリなど) を同じチーム内のその他のユーザーと共有する権限をユーザーに許可します。クエリエディタ v2 リソースへのアクセスを制御する方法の詳細については、IAM コンソールでクエリエディタ v2 の特定の管理ポリシーの定義を参照してください。

Amazon Redshift クエリエディタの v2 AWS 管理ポリシーでは、条件内で AWS タグを使用して、リソースへのアクセスをスコープします。クエリエディタ v2 の場合、クエリの共有は、プリンシパル (IAM ロール) にアタッチした IAM ポリシーのタグキーおよび値 "aws:ResourceTag/sqlworkbench-team": "${aws:PrincipalTag/sqlworkbench-team}" に基づいて行われます。クエリエディタ v2 では、同じ AWS アカウント内で同じタグ値 (accounting-team など) を持つプリンシパルは、同じチームに属しています。一度に 1 つのチームにのみ関連付けることができます。管理者権限を持つユーザーは、IAM コンソールで、すべてのチームメンバーに同じ値の sqlworkbench-team タグを付与してチームを設定することができます。sqlworkbench-team のタグ値が IAM ユーザーまたは IAM ロールに対して変更された場合、変更が共有リソースに反映されるまで遅延が発生する可能性があります。リソース (クエリなど) のタグ値が変更された場合は、変更が反映されるまで遅延が発生する可能性があります。また、チームメンバーは tag:GetResources のアクセス許可を共有します。

例 : IAM ロールの accounting-team タグを追加する
  1. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. コンソールのナビゲーションペインで、ロール を選択し、編集するロールの名前を選択します。

  3. タグ タブを選択し、タグ管理を選択します。

  4. タグキー sqlworkbench-team と値 accounting-teamを追加。

  5. 変更を保存を選択します。

    これで、IAM プリンシパル (この IAM ロールがアタッチされた)がチームとクエリを共有すると、その他の accounting-team タグ値は、クエリを表示することができます。

IAM ロールや IAM ユーザーなど、プリンシパルにタグをアタッチする方法については、「IAM ユーザーガイド」の「IAM リソースのタグ付け」を参照してください。

ID プロバイダ (IdP) を使用して、セッションレベルでチームを設定することもできます。これにより、同じ IAM ロールを使用する複数のユーザーが異なるチームを持つことができます。IAM ロール信頼ポリシーが sts:TagSession オペレーションを許可している必要があります。詳しくは、「IAM ユーザーガイド」の「セッションタグの追加に必要な権限」を参照してください。IdP によって提供される SAML アサーションにプリンシパルタグ属性を追加します。

<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:sqlworkbench-team"> <AttributeValue>accounting-team</AttributeValue> </Attribute>

ID プロバイダ (IdP) の指示に従って、ディレクトリから取得したコンテンツを SAML 属性に設定します。ID プロバイダー (IdP) と Amazon Redshift の詳細については、「IAM ユーザーガイド」の「IAM 認証を使用したデータベースユーザー認証情報の生成」と「ID プロバイダーとフェデレーション」を参照してください。

sqlworkbench:CreateNotebookVersion は、ノートブックセルの現在のコンテンツを取得し、アカウントにノートブックバージョンを作成するアクセス許可を付与します。つまり、バージョン作成時には、ノートブックの現在のコンテンツはバージョンのコンテンツと同じです。その後、バージョンのセルのコンテンツは、現在のノートブックが更新されたときと同じままになります。sqlworkbench:GetNotebookVersion は、ノートブックのバージョンを取得するアクセス許可を付与します。sqlworkbench:BatchGetNotebookCell アクセス許可は持っていないものの、ノートブックに対する sqlworkbench:CreateNotebookVersion および sqlworkbench:GetNotebookVersion アクセス許可を持っているユーザーは、そのバージョンのノートブックセルにアクセスできます。sqlworkbench:BatchGetNotebookCell アクセス許可を持っていないこのユーザーは、最初にバージョンを作成してから取得することで、ノートブックのセルのコンテンツを取得できます。

Amazon Redshift スケジューラを使用するために必要なアクセス許可

Amazon Redshift スケジューラを使用する際、スケジューラがユーザーに代わってアクセス許可を引き受けることができるよう、Amazon Redshift スケジューラ (scheduler.redshift.amazonaws.com) に対して信頼関係を持つ IAM ロールをセットアップします。また、スケジュールする Amazon Redshift API オペレーションのロールに対してポリシー (アクセス許可)をアタッチすることもできます。

次の例は、Amazon Redshift スケジューラと Amazon Redshift との信頼関係をセットアップする JSON フォーマットでのポリシードキュメントを示しています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "scheduler.redshift.amazonaws.com", "redshift.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

信頼エンティティの詳細については、「IAM ユーザーガイド」の「AWS サービスに権限を委譲するロールの作成」を参照してください。

また、スケジュールする Amazon Redshift オペレーションに対してもアクセス許可を追加する必要があります。

スケジューラで ResizeCluster オペレーションを使用するには、次に類似したアクセス許可を IAM ポリシーに追加します。環境によって、ポリシーをより限定的にする必要がある場合もあります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:ResizeCluster", "Resource": "*" } ] }

Amazon Redshift のスケジューラ用のロールを作成する手順については、「IAM ユーザーガイド」の「AWS サービスのロールの作成 (コンソール)」を参照してください。IAM コンソールでロールを作成する際は、次の選択を行います。

  • このロールを使用するサービスを選択で、Redshiftを選択します。

  • ユースケースの選択Redshift - スケジューラを選択します。

  • Amazon Redshift オペレーションがスケジュールされるのを許可するロールにポリシーを作成またはアタッチします。ポリシーの作成 を選択するか、ポリシーをアタッチするロールを変更します。スケジュールするオペレーションに対して JSON ポリシーを入力します。

  • ロールを作成したら、redshift.amazonaws.comサービスを含むIAM ロールの 信頼関係 を編集します。

作成する IAM ロールには、scheduler.redshift.amazonaws.comredshift.amazonaws.com という信頼されているエンティティがあります。また、"redshift:ResizeCluster"などのサポートされた Amazon Redshift API アクションを許可するポリシーがアタッチされています。

Amazon EventBridge スケジューラを使用するために必要なアクセス許可

Amazon EventBridge スケジューラを使用する際、スケジューラがユーザーに代わってアクセス許可を引き受けることができるよう、EventBridge スケジューラ (events.amazonaws.com) に対して信頼関係を持つ IAM ロールをセットアップします。また、スケジュールする Amazon Redshift Data API オペレーションのロールと Amazon EventBridge オペレーションのポリシーに、ポリシー (アクセス許可)をアタッチすることもできます。

EventBridge スケジューラは、コンソールの Amazon Redshift クエリエディタを使用してスケジュールされたクエリを作成するときに使用します。

IAM ロールを作成して、IAM コンソールでスケジュールされたクエリを実行できます。この IAM ロールで、AmazonEventBridgeFullAccessAmazonRedshiftDataFullAccessをアタッチします。

次の例は、EventBridge スケジューラとの信頼関係をセットアップする JSON フォーマットでのポリシードキュメントを示しています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", ] }, "Action": "sts:AssumeRole" } ] }

信頼エンティティの詳細については、「IAM ユーザーガイド」の「AWS のサービスにアクセス許可を委任するロールの作成」を参照してください。

EventBridge スケジューラのロールを作成する手順については、「IAM ユーザーガイド」から「AWS のサービス用ロールの作成 (コンソール)」を参照してください。IAM コンソールでロールを作成する際は、次の選択を行います。

  • このロールを使用するサービスを選択で、CloudWatch Eventsを選択します。

  • ユースケースの選択CloudWatch Eventsを選択します。

  • 次のアクセス許可ポリシー : AmazonEventBridgeFullAccessAmazonRedshiftDataFullAccessをアタッチします。

作成する IAM ロールには、events.amazonaws.comという信頼されたエンティティがあります。また、"redshift-data:*"などのサポートされた Amazon Redshift API アクションを許可するポリシーがアタッチされています。

Amazon Redshift 機械学習 (ML) を使用するために必要なアクセス許可

Amazon Redshift 機械学習 (ML) を使用するために必要なアクセス権限の記述を以下に示します。

Amazon SageMaker で Amazon Redshift ML を使用するには、デフォルトよりも制限の厳しいポリシーを持つ IAM ロールを作成します。以下のフォーマットを使用できます。必要に応じてこのポリシーを変更することもできます。

次のポリシーに、Amazon Redshift によるモデルの説明可能性を備えた SageMaker Autopilot を実行するために、必要となるアクセス許可を示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateAutoMLJob", "sagemaker:CreateCompilationJob", "sagemaker:CreateEndpoint", "sagemaker:DescribeAutoMLJob", "sagemaker:DescribeTrainingJob", "sagemaker:DescribeCompilationJob", "sagemaker:DescribeProcessingJob", "sagemaker:DescribeTransformJob", "sagemaker:ListCandidatesForAutoMLJob", "sagemaker:StopAutoMLJob", "sagemaker:StopCompilationJob", "sagemaker:StopTrainingJob", "sagemaker:DescribeEndpoint", "sagemaker:InvokeEndpoint", "sagemaker:StopProcessingJob", "sagemaker:CreateModel", "sagemaker:CreateProcessingJob" ], "Resource": [ "arn:aws:sagemaker:*:*:model/*redshift*", "arn:aws:sagemaker:*:*:training-job/*redshift*", "arn:aws:sagemaker:*:*:automl-job/*redshift*", "arn:aws:sagemaker:*:*:compilation-job/*redshift*", "arn:aws:sagemaker:*:*:processing-job/*redshift*", "arn:aws:sagemaker:*:*:transform-job/*redshift*", "arn:aws:sagemaker:*:*:endpoint/*redshift*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/sagemaker/Endpoints/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/ProcessingJobs/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/TrainingJobs/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/TransformJobs/*redshift*" ] }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": [ "SageMaker", "/aws/sagemaker/Endpoints", "/aws/sagemaker/ProcessingJobs", "/aws/sagemaker/TrainingJobs", "/aws/sagemaker/TransformJobs" ] } } }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetBucketCors", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutBucketAcl", "s3:PutBucketCors", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:CreateBucket" ], "Resource": [ "arn:aws:s3:::redshift-downloads", "arn:aws:s3:::redshift-downloads/*", "arn:aws:s3:::*redshift*", "arn:aws:s3:::*redshift*/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetBucketCors", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutBucketAcl", "s3:PutBucketCors", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:CreateBucket" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "s3:ExistingObjectTag/Redshift": "true" } } }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com" ] } } } ] }

次のポリシーに、Amazon DynamoDB、Redshift Spectrum、および Amazon RDS フェデレーションへのアクセスを可能にするため必要な、完全かつ最小限のアクセス許可を示します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:CreateAutoMLJob", "sagemaker:CreateCompilationJob", "sagemaker:CreateEndpoint", "sagemaker:DescribeAutoMLJob", "sagemaker:DescribeTrainingJob", "sagemaker:DescribeCompilationJob", "sagemaker:DescribeProcessingJob", "sagemaker:DescribeTransformJob", "sagemaker:ListCandidatesForAutoMLJob", "sagemaker:StopAutoMLJob", "sagemaker:StopCompilationJob", "sagemaker:StopTrainingJob", "sagemaker:DescribeEndpoint", "sagemaker:InvokeEndpoint", "sagemaker:StopProcessingJob", "sagemaker:CreateModel", "sagemaker:CreateProcessingJob" ], "Resource": [ "arn:aws:sagemaker:*:*:model/*redshift*", "arn:aws:sagemaker:*:*:training-job/*redshift*", "arn:aws:sagemaker:*:*:automl-job/*redshift*", "arn:aws:sagemaker:*:*:compilation-job/*redshift*", "arn:aws:sagemaker:*:*:processing-job/*redshift*", "arn:aws:sagemaker:*:*:transform-job/*redshift*", "arn:aws:sagemaker:*:*:endpoint/*redshift*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/sagemaker/Endpoints/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/ProcessingJobs/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/TrainingJobs/*redshift*", "arn:aws:logs:*:*:log-group:/aws/sagemaker/TransformJobs/*redshift*" ] }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": [ "SageMaker", "/aws/sagemaker/Endpoints", "/aws/sagemaker/ProcessingJobs", "/aws/sagemaker/TrainingJobs", "/aws/sagemaker/TransformJobs" ] } } }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetBucketCors", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutBucketAcl", "s3:PutBucketCors", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:CreateBucket" ], "Resource": [ "arn:aws:s3:::redshift-downloads", "arn:aws:s3:::redshift-downloads/*", "arn:aws:s3:::*redshift*", "arn:aws:s3:::*redshift*/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketAcl", "s3:GetBucketCors", "s3:GetEncryptionConfiguration", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutBucketAcl", "s3:PutBucketCors", "s3:DeleteObject", "s3:AbortMultipartUpload", "s3:CreateBucket" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "s3:ExistingObjectTag/Redshift": "true" } } }, { "Effect": "Allow", "Action": [ "dynamodb:Scan", "dynamodb:DescribeTable", "dynamodb:Getitem" ], "Resource": [ "arn:aws:dynamodb:*:*:table/*redshift*", "arn:aws:dynamodb:*:*:table/*redshift*/index/*" ] }, { "Effect": "Allow", "Action": [ "elasticmapreduce:ListInstances" ], "Resource": [ "arn:aws:elasticmapreduce:*:*:cluster/*redshift*" ] }, { "Effect": "Allow", "Action": [ "elasticmapreduce:ListInstances" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "elasticmapreduce:ResourceTag/Redshift": "true" } } }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:*:*:function:*redshift*" }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "arn:aws:glue:*:*:table/*redshift*/*", "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*redshift*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": [ "arn:aws:secretsmanager:*:*:secret:*redshift*" ] }, { "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*", "Condition": { "StringEquals": { "secretsmanager:ResourceTag/Redshift": "true" } } }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::*:role/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "redshift.amazonaws.com", "glue.amazonaws.com", "sagemaker.amazonaws.com", "athena.amazonaws.com" ] } } } ] }

オプションとして、暗号化用に AWS KMS キーを使用するために、以下のアクセス許可をポリシーに追加します。

{ "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:<your-region>:<your-account-id>:key/<your-kms-key>" ] }

Amazon Redshift と SageMaker が、他のサービスとやり取りするロールを引き受けることを許可するには、IAM ロールに以下の信頼ポリシーを追加します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com", "forecast.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

Amazon S3 バケット redshift-downloads/redshift-ml/ は、他のステップや例で使用されるサンプルデータが保存される場所です。Amazon S3 からデータをロードする必要がない場合は、削除できます。または、Amazon Redshift にデータをロードするために使用する他の Amazon S3 バケットに置き換えます。

your-account-idyour-role、および your-s3-bucket の値は、CREATE MODEL コマンドで指定したアカウント ID、ロール、およびバケットです。

(任意)Amazon Redshift ML で使用する AWS KMS キーを指定する場合は、サンプルポリシーの AWS KMS キーセクションを使用できます。your-kms-key 値は、CREATE MODEL コマンドの一部として使用するキーです。

ハイパーパラメータ調整ジョブにプライベート仮想プライベートクラウド (VPC) を指定する場合は、次のアクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ] }

モデルの説明を使用するには、SageMaker API オペレーションを呼び出すアクセス許可があることを確認します。AmazonSageMakerFullAccess 管理ポリシーを使用することをお勧めします。より制限の厳しいポリシーを持つ IAM ロールを作成する場合、以下のポリシーを使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker::CreateEndpoint", "sagemaker::CreateEndpointConfig", "sagemaker::DeleteEndpoint", "sagemaker::DeleteEndpointConfig", "sagemaker::DescribeEndpoint", "sagemaker::DescribeEndpointConfig", "sagemaker::DescribeModel", "sagemaker::InvokeEndpoint", "sagemaker::ListTags" ], "Resource": "*" } ] }

AmazonSageMakerFullAccess 管理ポリシーの詳細については、「AmazonSageMakerFullAccess」の「Amazon SageMaker 開発者ガイド」を参照してください。

予測モデルを作成する場合は、AmazonForecastFullAccess マネージドポリシーを使用することをお勧めします。より制限の厳しいポリシーを使用する場合、IAM ロールに以下のポリシーを追加します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "forecast:CreateAutoPredictor", "forecast:CreateDataset", "forecast:CreateDatasetGroup", "forecast:CreateDatasetImportJob", "forecast:CreateForecast", "forecast:CreateForecastExportJob", "forecast:DeleteResourceTree", "forecast:DescribeAutoPredictor", "forecast:DescribeDataset", "forecast:DescribeDatasetGroup", "forecast:DescribeDatasetImportJob", "forecast:DescribeForecast", "forecast:DescribeForecastExportJob", "forecast:StopResource", "forecast:TagResource", "forecast:UpdateDatasetGroup" ], "Resource": "*" } ] }

Amazon Redshift ML の詳細については、「Amazon Redshift での機械学習の使用」または「CREATE MODEL」を参照してください。

ストリーミング取り込みのアクセス許可

ストリーミング取り込みは 2 つのサービスで機能します。Kinesis Data Streams と Amazon MSK です。

Kinesis Data Streams でストリーミング取り込みを使用するために必要なアクセス許可

マネージド ポリシーの例を含む手順については、「Amazon Kinesis Data Streams からストリーミング取り込みを開始する方法」を参照してください。

Amazon MSK でストリーミング取り込みを使用するために必要なアクセス許可

マネージド ポリシーの例を含む手順については、「Amazon Managed Streaming for Apache Kafka からのストリーミング取り込みを開始する」を参照してください。

データ共有 API オペレーションを使用するために必要な許可

データ共有 API オペレーションへのアクセスを制御するには、IAM アクションベースのポリシーを使用します。IAM ポリシーの管理方法については、「IAM ユーザーガイド」の「IAM ポリシーの管理」を参照してください。

特に、プロデューサークラスターの管理者が、AWS アカウントアカウント外のデータ共有のエグレスを承認するために AuthorizeDataShare 呼び出しを使用する必要があるとします。この場合、IAM アクションベースのポリシーを設定して、必要なアクセス許可を付与します。エグレスの取り消しには、DeauthorizeDataShare 呼び出しを使用します。

IAM アクションベースのポリシーを使用するときは、ポリシーで DataShareARNなどの IAM リソースを指定することもできます。以下は、DataShareARNの形式と例を示しています。

arn:aws:redshift:region:account-id:datashare:namespace-guid/datashare-name arn:aws:redshift:us-east-1:555555555555:datashare:86b5169f-01dc-4a6f-9fbb-e2e24359e9a8/SalesShare

IAM ポリシーでデータ共有名を指定することで、特定のデータ共有への AuthorizeDataShare アクセスを制限することができます。

{ "Statement": [ { "Action": [ "redshift:AuthorizeDataShare", ], "Resource": [ "arn:aws:redshift:us-east-1:555555555555:datashare:86b5169f-01dc-4a6f-9fbb-e2e24359e9a8/SalesShare" ], "Effect": "Deny" } ] }

また、IAM ポリシーを、特定のプロデューサクラスターが所有するすべてのデータ共有に制限して使用することも可能です。これを行うには、そのポリシー内の datashare-name 値を、ワイルドカードまたはアスタリスクに置き換えます。クラスターの namespace-guid 値はそのままにしておきます。

arn:aws:redshift:us-east-1:555555555555:datashare:86b5169f-01dc-4a6f-9fbb-e2e24359e9a8/*

以下は、エンティティが、特定のプロデューサークラスターが所有するデータ共有上の AuthorizeDataShare を呼び出せないようにする IAM ポリシーの例です。

{ "Statement": [ { "Action": [ "redshift:AuthorizeDataShare", ], "Resource": [ "arn:aws:redshift:us-east-1:555555555555:datashare:86b5169f-01dc-4a6f-9fbb-e2e24359e9a8/*" ], "Effect": "Deny" } ] }

DataShareARN は、データ共有名と、所有クラスターの名前空間のグローバル一意 ID (GUID) の両方に基づいてアクセスを制限します。この制限は、名前をアスタリスクにより指定することによって実施されています。

GetClusterCredentials のリソースポリシー

JDBC または ODBC 接続と IAM データベース認証情報を使用してクラスターデータベースに接続するか、必要な GetClusterCredentials アクションをプログラムで呼び出すには、最小限のアクセス権限が必要です。少なくとも、redshift:GetClusterCredentials アクションを呼び出すアクセス許可と、dbuser リソースへのアクセス権が必要です。

JDBC または ODBC 接続を使用する場合、serverport の代わりに cluster_idregionを指定できますが、そのためには、ポリシーで redshift:DescribeClusters アクションと cluster リソースへのアクセス権を許可する必要があります。

オプションパラメータ AutocreateDbGroups、および DbNameを使用して GetClusterCredentials を呼び出す場合は、アクションも許可し、以下の表に一覧表示されているリソースへのアクセスを許可してください。

GetClusterCredentials パラメータ

アクション

リソース

Autocreate

redshift:CreateClusterUser

dbuser

DbGroups

redshift:JoinGroup

dbgroup

DbName

該当なし dbname

リソースの詳細については、「Amazon Redshift のリソースとオペレーション」を参照してください。

また、次の条件をポリシーに含めることもできます。

  • redshift:DurationSeconds

  • redshift:DbName

  • redshift:DbUser

条件の詳細については、「ポリシーでの条件を指定する」を参照してください。

お客様が管理するポリシーの例

このセクションでは、さまざまな Amazon Redshift アクションのアクセス権限を付与するユーザーポリシー例を示しています。これらのポリシーは、Amazon Redshift API、AWS SDK、または AWS CLIを使用しているときに機能します。

注記

すべての例で、米国西部 (オレゴン) リージョン (us-west-2) を使用し、架空のアカウント ID を使用しています。

例 1: ユーザーにすべての Amazon Redshift アクションとリソースへの完全アクセスを許可する

次のポリシーでは、すべてのリソースですべての Amazon Redshift アクションにアクセスできます。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowRedshift", "Action": [ "redshift:*" ], "Effect": "Allow", "Resource": "*" } ] }

Action 要素の値 redshift:* は、Amazon Redshift のすべてのアクションを示します。

例 2: 一連の Amazon Redshift アクションへのユーザーアクセスを拒否する

デフォルトでは、すべてのアクセス権が拒否されます。ただし、特定のアクションまたは一連のアクションへのアクセスを明示的に拒否しなければならない場合もあります。次のポリシーでは、すべての Amazon Redshift アクションへのアクセスが許可され、名前が Deleteで始まる Amazon Redshift アクションへのアクセスが明示的に拒否されます。このポリシーは、us-west-2のすべての Amazon Redshift リソースに適用されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowUSWest2Region", "Action": [ "redshift:*" ], "Effect": "Allow", "Resource": "arn:aws:redshift:us-west-2:*" }, { "Sid":"DenyDeleteUSWest2Region", "Action": [ "redshift:Delete*" ], "Effect": "Deny", "Resource": "arn:aws:redshift:us-west-2:*" } ] }

例 3: ユーザーがクラスターを管理することを許可する

次のポリシーでは、ユーザーはすべてのクラスターを作成、削除、変更、再起動できます。さらに、名前が protectedで始まるクラスターを削除するアクセス権限が拒否されます。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowClusterManagement", "Action": [ "redshift:CreateCluster", "redshift:DeleteCluster", "redshift:ModifyCluster", "redshift:RebootCluster" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid":"DenyDeleteProtected", "Action": [ "redshift:DeleteCluster" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:cluster:protected*" ], "Effect": "Deny" } ] }

例 4: ユーザーにスナップショットアクセスの許可と取り消し

次のポリシーでは、ユーザー (例: ユーザー A)に次の操作を許可します。

  • sharedというクラスターから作成されたスナップショットへのアクセスを許可します。

  • shared クラスターから作成されたスナップショット (スナップショット名の先頭が revokable)のスナップショットアクセスを取り消します。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowSharedSnapshots", "Action": [ "redshift:AuthorizeSnapshotAccess" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:shared/*" ], "Effect": "Allow" }, { "Sid":"AllowRevokableSnapshot", "Action": [ "redshift:RevokeSnapshotAccess" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:snapshot:*/revokable*" ], "Effect": "Allow" } ] }

ユーザー A がスナップショットへのアクセスをユーザー B に許可した場合、スナップショットからクラスターを復元できるように、ユーザー B には次のようなポリシーを与える必要があります。次のポリシーでは、ユーザー B はスナップショットを表現したり、スナップショットから復元したり、クラスターを作成したりできます。これらのクラスター名の先頭は from-other-accountにする必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowDescribeSnapshots", "Action": [ "redshift:DescribeClusterSnapshots" ], "Resource": [ "*" ], "Effect": "Allow" }, { "Sid":"AllowUserRestoreFromSnapshot", "Action": [ "redshift:RestoreFromClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:snapshot:*/*", "arn:aws:redshift:us-west-2:444455556666:cluster:from-other-account*" ], "Effect": "Allow" } ] }

例 5: クラスタースナップショットのコピーとスナップショットからのクラスターの復元をユーザーに許可する

次のポリシーでは、ユーザーは big-cluster-1という名前のクラスターから作成したスナップショットをコピーし、名前が snapshot-for-restoreで始まるスナップショットを復元できます。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowCopyClusterSnapshot", "Action": [ "redshift:CopyClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:snapshot:big-cluster-1/*" ], "Effect": "Allow" }, { "Sid":"AllowRestoreFromClusterSnapshot", "Action": [ "redshift:RestoreFromClusterSnapshot" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:snapshot:*/snapshot-for-restore*", "arn:aws:redshift:us-west-2:123456789012:cluster:*" ], "Effect": "Allow" } ] }

次のポリシー例では、Amazon Redshift、Amazon Simple Notification Service (Amazon SNS)、および Amazon CloudWatch のすべてのアクションとリソースへのアクセスを許可します。アカウントにおける関連する Amazon EC2 リソースでの指定されたアクションも許可します。

注記

リソースレベルのアクセス権限は、このサンプルポリシーで指定された Amazon EC2 アクションではサポートされません。

{ "Version": "2012-10-17", "Statement": [ { "Sid":"AllowRedshift", "Effect": "Allow", "Action": [ "redshift:*" ], "Resource": [ "*" ] }, { "Sid":"AllowSNS", "Effect": "Allow", "Action": [ "sns:*" ], "Resource": [ "*" ] }, { "Sid":"AllowCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:*" ], "Resource": [ "*" ] }, { "Sid":"AllowEC2Actions", "Effect": "Allow", "Action": [ "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:AttachNetworkInterface", "ec2:DescribeAccountAttributes", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeInternetGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], "Resource": [ "*" ] } ] }

例 7: ユーザーが Amazon Redshift コンソールを使用してリソースにタグを付けることを許可する

次のポリシー例では、ユーザーが AWS Resource Groupsを使用して Amazon Redshift コンソールでリソースにタグを付けることを許可しています。このポリシーは、新しい Amazon Redshift コンソールを呼び出すユーザーロールにアタッチできます。タグ付けの詳細については、「Amazon Redshift のリソースへのタグ付け」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Tagging permissions", "Effect": "Allow", "Action": [ "redshift:DeleteTags", "redshift:CreateTags", "redshift:DescribeTags", "tag:UntagResources", "tag:TagResources" ], "Resource": "*" } ] }

GetClusterCredentials を使用するポリシーの例

以下のポリシーでは、これらのサンプルパラメータの値を使用します。

  • リージョン : us-west-2

  • AWS アカウント 123456789012

  • クラスター名 : examplecluster

次のポリシーでは GetCredentialsCreateClusterUser、および JoinGroup アクションが有効になります。このポリシーでは、AWS ユーザー ID が "AIDIODR4TAW7CSEXAMPLE:${redshift:DbUser}@yourdomain.com"に一致する場合のみ条件キーが使用され、GetClusterCredentialsCreateClusterUser アクションが許可されます。IAM アクセスは、"testdb" データベース対してのみ要求されます。また、このポリシーは、ユーザーが "common_group"という名前のグループに参加することを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GetClusterCredsStatement", "Effect": "Allow", "Action": [ "redshift:GetClusterCredentials" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/${redshift:DbUser}", "arn:aws:redshift:us-west-2:123456789012:dbname:examplecluster/testdb", "arn:aws:redshift:us-west-2:123456789012:dbgroup:examplecluster/common_group" ], "Condition": { "StringEquals": { "aws:userid":"AIDIODR4TAW7CSEXAMPLE:${redshift:DbUser}@yourdomain.com" } } }, { "Sid": "CreateClusterUserStatement", "Effect": "Allow", "Action": [ "redshift:CreateClusterUser" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbuser:examplecluster/${redshift:DbUser}" ], "Condition": { "StringEquals": { "aws:userid":"AIDIODR4TAW7CSEXAMPLE:${redshift:DbUser}@yourdomain.com" } } }, { "Sid": "RedshiftJoinGroupStatement", "Effect": "Allow", "Action": [ "redshift:JoinGroup" ], "Resource": [ "arn:aws:redshift:us-west-2:123456789012:dbgroup:examplecluster/common_group" ] } ] }