条件の指定: カスタムタグの使用
Amazon Aurora では、カスタムタグを使用して IAM ポリシーで条件を指定することがサポートされています。
例えば、environment
という名前のタグを、beta
、staging
、production
などの値で DB インスタンスに追加するとします。追加する場合、特定のユーザーを environment
タグ値に基づく DB インスタンスに制限するポリシーを作成することができます。
注記
カスタムタグ識別子は大文字と小文字が区別されます。
以下の表では、Condition
要素で使用できる RDS タグ識別子を示しています。
RDS タグ識別子 | 適用先 |
---|---|
db-tag |
リードレプリカを含む DB インスタンス |
snapshot-tag |
DB スナップショット |
ri-tag |
リザーブド DB インスタンス |
og-tag |
DB オプショングループ |
pg-tag |
DB パラメータグループ |
subgrp-tag |
DB サブネットグループ |
es-tag |
イベントサブスクリプション |
cluster-tag |
DB クラスター |
cluster-pg-tag |
DB クラスターのパラメータグループ |
cluster-snapshot-tag |
DB クラスタースナップショット |
カスタムタグの条件の構文は次のとおりです。
"Condition":{"StringEquals":{"rds:
rds-tag-identifier
/tag-name
":
["value
"]} }
例えば、次の Condition
要素は、environment
という名前のタグを持ち、タグの値が production
である DB インスタンスに適用されます。
"Condition":{"StringEquals":{"rds:db-tag/
environment
": ["production
"]} }
タグの作成の詳細については、「Amazon Aurora および Amazon RDS リソースのタグ付け」を参照してください。
重要
タグを使用して RDS リソースへのアクセスを管理する場合は、RDS リソースのタグへのアクセスを保護することをお勧めします。AddTagsToResource
および RemoveTagsFromResource
アクションのポリシーを作成することによって、タグへのアクセスを管理できます。例えば、次のポリシーは、ユーザーがすべてのリソースのタグを追加または削除することを拒否します。次に、特定のユーザーがタグを追加または削除することを許可するポリシーを作成できます。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyTagUpdates", "Effect":"Deny", "Action":[ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"*" } ] }
Aurora アクションのリストを確認するには、「サービス認可リファレンス」の「Amazon RDS によって定義されるアクション」を参照してください。
ポリシー例: カスタムタグの使用
以下に示しているのは、Amazon Aurora IAM アクセス許可ポリシーでのカスタムタグの使用例です。Amazon Aurora リソースへのタグの追加の詳細については、「Amazon RDS の Amazon リソースネーム (ARN)」を参照してください。
注記
すべての例で、us-west-2 リージョンを使用し、架空のアカウント ID を含めています。
例 1: 2 つの異なる値を持つタグが付いたリソースに対するアクションにアクセス許可を付与する
次のポリシーでは、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" ] } } } ] }
例 2: 指定した DB パラメータグループを使用する DB インスタンスを作成するためのアクセス許可を明示的に拒否する
以下のポリシーでは、特定のタグ値が設定された DB パラメータグループを使用する DB インスタンスの作成のためのアクセス権限を明示的に拒否しています。DB インスタンスを作成するときに特定のユーザー定義の DB パラメータグループの使用を必須とする場合にも、このポリシーを適用できます。Deny
を使用するポリシーは、ほとんどの場合、適用範囲のより広いポリシーによって付与されるアクセス許可を制限するために使用します。
明示的に拒否するアクセス権限は、付与する他のいずれのアクセス権限よりも優先されます。これにより、決して付与されることのないアクセス権限を ID が誤って取得することがなくなります。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyProductionCreate", "Effect":"Deny", "Action":"rds:CreateDBInstance", "Resource":"arn:aws:rds:*:123456789012:pg:*", "Condition":{ "StringEquals":{ "rds:pg-tag/usage":"prod" } } } ] }
例 3: インスタンス名にユーザー名がプレフィックスとして付加されている DB インスタンスに対するアクションにアクセス許可を付与する
以下のポリシーでは、DB インスタンス名の前にユーザー名が付いている DB インスタンスのうち、AddTagsToResource
と同等の RemoveTagsFromResource
というタグが付いているか、または stage
というタグが付いていない DB インスタンスに対する、API (devo
または stage
を除く) の呼び出しのためのアクセス権限を付与しています。
ポリシーの Resource
行では、リソースをその Amazon Resource Name (ARN) により識別しています。ARN と Amazon Aurora リソースの使用の詳細については、「Amazon RDS の Amazon リソースネーム (ARN)」を参照してください。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowFullDevAccessNoTags", "Effect":"Allow", "NotAction":[ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"arn:aws:rds:*:123456789012:db:${aws:username}*", "Condition":{ "StringEqualsIfExists":{ "rds:db-tag/stage":"devo" } } } ] }