メニュー
Amazon Redshift
管理ガイド (API Version 2012-12-01)

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

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

重要

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

このセクションでは、次のトピックを対象としています。

以下に示しているのは、アクセス権限ポリシーの例です。このポリシーでは、ユーザーはすべてのクラスターを作成、削除、変更、再起動できます。さらに、クラスター識別子が production で始まるクラスターを削除または変更するアクセス権限が拒否されます。

Copy
{ "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 コンソールを使用するために必要なアクセス権限

Amazon Redshift コンソールを使用しているユーザーの場合、そのユーザーは、Amazon Redshift リソースと、Amazon EC2 セキュリティーおよびネットワーク情報を含むその他の関連情報をその AWS アカウントで記述できる、最小限のアクセス権限を持っている必要があります。

これらの最小限必要なアクセス権限よりも制限された IAM ポリシーを作成している場合、その IAM ポリシーを使用するユーザーに対してコンソールは意図したとおりには機能しません。Amazon Redshift での AWS 管理 (事前定義) ポリシー で説明されているとおり、ユーザーが Amazon Redshift コンソールを使用できること、および、 AmazonRedshiftReadOnlyAccess 管理対象ポリシーがユーザーにアタッチされていることを確認してください。

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

Amazon Redshift での AWS 管理 (事前定義) ポリシー

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

アカウントのユーザーにアタッチ可能な以下の AWS 管理ポリシーは、Amazon Redshift に固有のものです。

  • AmazonRedshiftReadOnlyAccess – AWS アカウントのすべての Amazon Redshift リソースへの読み取り専用アクセスを許可します。

  • AmazonRedshiftFullAccess – AWS アカウントのすべての Amazon Redshift リソースへのフルアクセスを許可します。

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

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

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

注記

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

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

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

Copy
{ "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 リソースに適用されます。

Copy
{ "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 で始まるクラスターを削除するアクセス権限が拒否されます。

Copy
{ "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) のスナップショットアクセスを取り消します。

Copy
{ "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 にする必要があります。

Copy
{ "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 で始まるスナップショットを復元できます。

Copy
{ "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 アクションではサポートされません。

Copy
{ "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": [ "*" ] } ] }