Aurora でリソースを作成、変更、削除するアクセス許可ポリシー
以下のセクションでは、リソースへのアクセスを許可および制限するアクセス許可ポリシーの例を示します。
AWS アカウントでの DB インスタンスの作成をユーザーに許可する
以下は、123456789012
アカウントで ID が AWS のアカウントが DB インスタンスを作成できるようにするポリシーの例です。ポリシーは、test
で始める新しい DB インスタンスの名前である必要があります。また、新しい DB インスタンスは、MySQL データベースエンジンと DB インスタンスの db.t2.micro
クラスを使用する必要があります。さらに、新しい DB インスタンスでは、オプショングループと default
で始まる DB パラメータグループ、および default
サブネットグループを使用する必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDBInstanceOnly", "Effect": "Allow", "Action": [ "rds:CreateDBInstance" ], "Resource": [ "arn:aws:rds:*:123456789012:db:test*", "arn:aws:rds:*:123456789012:og:default*", "arn:aws:rds:*:123456789012:pg:default*", "arn:aws:rds:*:123456789012:subgrp:default" ], "Condition": { "StringEquals": { "rds:DatabaseEngine": "mysql", "rds:DatabaseClass": "db.t2.micro" } } } ] }
ポリシーには、 ユーザー用の以下のアクセス許可を指定する単一のステートメントが含まれます。
ポリシーを使用すると、アカウントは CreateDBInstance API オペレーションを使用して DB インスタンスを作成できます (これは create-db-instance AWS CLI コマンドと AWS Management Console にも適用されます)。
Resource
要素では、ユーザーがリソースでアクションを実行できることを指定できます。Amazon Resources Name (ARN) を使用してリソースを指定します。この ARN には、リソースが属しているサービスの名前 (rds
)、AWS リージョン (*
はこの例のリージョンを示します)、AWS アカウント番号 (123456789012
はこの例のアカウント番号です)、およびリソースのタイプが含まれます。ARN の作成の詳細については、「Amazon RDS の Amazon リソースネーム (ARN)」を参照してください。例の
Resource
要素は、ユーザーのリソースで、以下のポリシーの制約を指定します。新しい DB インスタンスの DB インスタンス識別子は、
test
で始まる必要があります (例:testCustomerData1
、test-region2-data
)。新しい DB インスタンスのオプショングループは、
default
で始まる必要があります。新しい DB インスタンスの DB パラメータグループは、
default
で始まる必要があります。新しい DB インスタンスのサブネットグループは、
default
サブネットグループである必要があります。
Condition
要素は、DB エンジンが MySQL で、DB インスタンスクラスがdb.t2.micro
である必要があることを指定します。Condition
要素は、ポリシーが有効になる条件を指定します。Condition
要素を使用して、アクセス許可または制約を追加できます。条件を指定する方法については、「Aurora のポリシー条件キー」を参照してください。この例では、rds:DatabaseEngine
およびrds:DatabaseClass
を条件として指定します。rds:DatabaseEngine
の有効な条件値については、CreateDBInstance のEngine
パラメータのリストを参照してください。rds:DatabaseClass
の有効な条件値については、「DB インスタンスクラスでサポートされている DB エンジン」を参照してください。
アイデンティティベースのポリシーでアクセス権限を得るプリンシパルを指定していないため、ポリシーでは Principal
要素を指定していません。ユーザーにポリシーをアタッチすると、そのユーザーが暗黙のプリンシパルになります。IAM ロールにアクセス権限ポリシーをアタッチすると、ロールの信頼ポリシーで識別されたプリンシパルがアクセス権限を得ることになります。
Aurora アクションのリストを確認するには、サービス認証リファレンスの「Amazon RDS で定義されるアクション」を参照してください。
RDS リソースに対する Describe アクションの実行をユーザーに許可する
以下のアクセス権限ポリシーは、Describe
で始まるすべてのアクションを実行するためのアクセス権限をユーザーに付与します。これらのアクションは、DB インスタンスなど RDS リソースに関する情報を表示します。Resource
要素内のワイルドカード文字 (*) は、アカウントによって所有されるすべての Amazon Aurora リソースに対してそれらのアクションが許可されることを示します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowRDSDescribe", "Effect": "Allow", "Action": "rds:Describe*", "Resource": "*" } ] }
指定した DB パラメータグループとサブネットグループを使用する DB インスタンスの作成をユーザーに許可する
以下の許可ポリシーは、mydbpg
DB パラメータグループと mydbsubnetgroup
DB サブネットグループを使用する必要のある DB インスタンスを作成することのみをユーザーに許可するための許可を付与します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "rds:CreateDBInstance", "Resource": [ "arn:aws:rds:*:*:pg:mydbpg", "arn:aws:rds:*:*:subgrp:mydbsubnetgroup" ] } ] }
2 つの異なる値を持つタグが付いたリソースに対するアクションにアクセス許可を付与する
アイデンティティベースのポリシーの条件を使用して、タグに基づいて Aurora リソースへのアクセスを制御できます。次のポリシーでは、stage
タグが development
または test
に設定された DB インスタンスに対して CreateDBSnapshot
API オペレーションを実行するためのアクセス許可が付与されます。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAnySnapshotName", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:snapshot:*" }, { "Sid":"AllowDevTestToCreateSnapshot", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }
次のポリシーでは、stage
タグが development
または test
に設定された DB インスタンスに対して ModifyDBInstance
API オペレーションを実行するためのアクセス許可が付与されます。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowChangingParameterOptionSecurityGroups", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource": [ "arn:aws:rds:*:123456789012:pg:*", "arn:aws:rds:*:123456789012:secgrp:*", "arn:aws:rds:*:123456789012:og:*" ] }, { "Sid":"AllowDevTestToModifyInstance", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }
ユーザーによる DB インスタンスの削除を禁止する
以下のアクセス権限ポリシーは、特定の DB インスタンスを削除することをユーザーに禁止するためのアクセス権限を付与します。例えば、管理者以外のすべてのユーザーに対して、本稼働 DB インスタンスの削除を拒否することができます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyDelete1", "Effect": "Deny", "Action": "rds:DeleteDBInstance", "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance" } ] }
リソースへのすべてのアクセスを拒否する
リソースへのアクセスを明示的に拒否できます。拒否ポリシーは許可ポリシーよりも優先されます。以下のポリシーは、リソースを管理する機能をユーザーに明示的に拒否します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "rds:*", "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb" } ] }