本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
指定條件:使用自訂標籤
Amazon RDS 支援在 IAM 政策中使用自訂標籤來指定條件。
例如,假設您將值為 environment
、beta
、staging
等等的 production
標籤新增至資料庫執行個體。如果這樣做,您就可以建立政策,根據 environment
標籤值限制某些資料庫執行個體的使用者。
注意
自訂標籤識別符會區分大小寫。
下表列出您可以在 Condition
元素中使用的 RDS 標籤識別符。
RDS 標籤識別符 | 適用對象 |
---|---|
db-tag |
資料庫執行個體,包括讀取複本 |
snapshot-tag |
資料庫快照 |
ri-tag |
預留資料庫執行個體 |
og-tag |
資料庫選項群組 |
pg-tag |
資料庫參數群組 |
subgrp-tag |
資料庫子網路群組 |
es-tag |
事件訂閱 |
cluster-tag |
資料庫叢集 |
cluster-pg-tag |
資料庫叢集參數群組 |
cluster-snapshot-tag |
資料庫叢集快照 |
自訂標籤條件的語法如下:
"Condition":{"StringEquals":{"rds:
rds-tag-identifier
/tag-name
":
["value
"]} }
例如,下列 Condition
元素會套用至標籤名稱為 environment
且標籤值為 production
的資料庫執行個體。
"Condition":{"StringEquals":{"rds:db-tag/
environment
": ["production
"]} }
如需建立標籤的相關資訊,請參閱標記 Amazon RDS 資源。
重要
如果您使用標記功能來管理 RDS 資源的存取,則我們建議您安全存取 RDS 資源的標籤。您可以建立 AddTagsToResource
和 RemoveTagsFromResource
動作的政策,來管理標籤的存取。例如,下列政策會拒絕使用者可對所有資源新增或移除標籤的能力。然後,您可以建立政策來允許特定使用者新增或刪除標籤。
{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyTagUpdates", "Effect":"Deny", "Action":[ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"*" } ] }
若要查看 Amazon RDS 動作的清單,請參閱服務授權參考中的 Amazon RDS 定義的動作。
範例政策:使用自訂標籤
以下是如何在 Amazon RDS IAM 許可政策中使用自訂標籤的範例。如需將標籤新增至 Amazon RDS 資源的詳細資訊,請參閱Amazon 資源名稱(ARNs)RDS。
注意
所有範例都使用 us-west-2 區域,且其中的帳戶 ID 皆為虛構。
範例 1:利用具有兩個不同值的特定標籤,對資源上的動作授予許可
下列政策允許在 stage
標籤設為 development
或 test
的資料庫執行個體上執行 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
的資料庫執行個體上執行 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:明確拒絕許可,不得建立一個使用所指定之資料庫參數群組的資料庫執行個體
下列政策明確拒絕許可,不得建立一個使用資料庫參數群組與特定標籤值搭配的資料庫執行個體。如果您需要在建立資料庫執行個體時,一律使用特定客戶建立的資料庫參數群組,則可能會套用此政策。使用 Deny
的政策最常用來限制更廣泛政策所授予的存取。
明確拒絕許可會取代任何其他已授予的許可。這確保身分不會意外取得您從未想要授予的許可。
{ "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:對資料庫執行個體上的動作授予許可,而此資料庫執行個體的執行個體名稱字首會加上使用者名稱
下列政策允許在資料庫執行個體上呼叫任何 API (但 AddTagsToResource
或 RemoveTagsFromResource
除外) 的許可,而此資料庫執行個體具有字首會加上使用者名稱的資料庫執行個體名稱,以及具有稱為 stage
等於 devo
的標籤,或沒有稱為 stage
的標籤。
政策中的 Resource
一行會依其 Amazon Resource Name (ARN) 識別資源。如需使用 ARN 與 Amazon RDS 資源的詳細資訊,請參閱Amazon 資源名稱(ARNs)RDS。
{ "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" } } } ] }