本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IAM 政策條件進行精細定義存取控制
您可在 Route 53 中指定使用 IAM 政策授予許可時的條件 (請參閱 存取控制)。例如,您可以:
-
授予許可以允許他人存取單一資源記錄集。
-
授予許可能讓使用者存取託管區域中特定 DNS 記錄類型的所有資源記錄集,例如 A 和 AAAA 記錄。
-
授予許可能讓使用者存取其名稱包含特定字串的資源記錄集。
-
授予許可能讓使用者在 Route 53 主控台上或在使用 ChangeResourceRecordSets API 時僅限執行某些
CREATE | UPSERT | DELETE動作。 -
授予許可,以允許使用者將私有託管區域與特定 VPC 建立關聯或取消關聯。
-
授予許可,以允許使用者列出與特定 VPC 相關聯的託管區域。
-
授予許可,以允許使用者存取以建立新的私有託管區域,並將其與特定 VPC 建立關聯。
-
授予許可以允許使用者建立或刪除 VPC 關聯授權。
您也可以建立將任何精細權限合併在一起的權限。
標準化 Route 53 條件索引鍵值
您在政策條件中輸入的值必須進行格式化或標準化,如下所示:
如果使用 route53:ChangeResourceRecordSetsNormalizedRecordNames:
-
所有字母必須小寫。
-
DNS 名稱不可有行尾點號。
-
a—z、0-9、- (連字號)、_ (底線) 和 . (用來分隔標籤的句點) 必須使用以下格式的逸出碼:\三位數八進位碼。例如,
\052是字元 * 的八進位碼。
如果使用 route53:ChangeResourceRecordSetsActions,則數值可能是下列任何一個值,且必須是大寫:
-
CREATE
-
UPSERT (更新插入)
-
DELETE
如果使用 route53:ChangeResourceRecordSetsRecordTypes:
-
該值必須是大寫字母,並且可能是任何 Route 53 支援的 DNS 記錄類型。如需詳細資訊,請參閱支援的 DNS 記錄類型。
如果使用 route53:VPCs:
-
值的格式必須為
VPCId=<vpc-id>,VPCRegion=<region>。 -
<vpc-id>和 的值<region>必須小寫,例如VPCId=vpc-123abc和VPCRegion=us-east-1。 -
內容索引鍵和值區分大小寫。
重要
您必須遵循這些慣例,才能授予別人許可,進而允許或限制別人能做的動作。此條件索引鍵僅接受 VPCId和 VPCRegion元素,不支援任何其他 AWS 資源 AWS 帳戶,例如 。
您可以使用 Access Analyzer 或 IAM 使用者指南中的政策模擬器來驗證您的政策是否如預期授予或限制他人權限。將 IAM 政策套用於要執行 Route 53 操作的測試使用者或測試角色也可以驗證許可。
指定條件:使用條件金鑰
AWS 為支援 IAM 進行存取控制的所有 AWS 服務提供一組預先定義的條件金鑰 (AWS全條件金鑰)。例如,您可以使用 aws:SourceIp 條件金鑰先檢查申請者的 IP 位址,再允許執行動作。如需詳細資訊以及 AWS通用金鑰的清單,請參閱《IAM 使用者指南》中的可用條件金鑰。
注意
Route 53 不支援標籤型條件金鑰。
下表顯示適用於 Route 53 的 Route 53 服務特定條件金鑰。
| Route 53 條件金鑰 | API 操作 | 值類型 | 說明 |
|---|---|---|---|
route53:ChangeResourceRecordSetsNormalizedRecordNames |
多重值 |
在收到 ChangeResourceRecordSets 請求時,顯示 DNS 記錄名稱清單。為了獲得預期反應,IAM 政策中的 DNS 名稱必須依照下列方式進行標準化:
|
|
route53:ChangeResourceRecordSetsRecordTypes |
多重值 |
收到
|
|
route53:ChangeResourceRecordSetsActions |
多重值 |
收到
|
|
route53:VPCs |
多重值 |
代表 AssociateVPCWithHostedZone、DisassociateVPCFromHostedZone、ListHostedZonesByVPC、CreateVPCAssociationAuthorization、 CreateHostedZone和 請求中的 VPCs 清單DeleteVPCAssociationAuthorization,格式為 "VPCId=<vpc-id>,VPCRegion=<region> |
範例政策:使用條件進行精細定義存取
本節中的每個範例都會將 Effect 子句設定為 Allow,而且只指定允許的動作、資源及參數。只允許存取 IAM 政策中明確列出的項目。
在某些情況下,有可能會重新撰寫這些政策,讓它們成為拒絕類型 (即,將 Effect 子句設定為 Deny,並反轉政策中的所有邏輯)。不過,建議您避免使用拒絕類型政策,因為它們與允許類型政策相較之下會較難正確地撰寫。對於需要文字正規化的 Route 53 而言尤其如此。
透過授予許可來限制他人對含特定名稱之 DNS 記錄的存取行為
下列許可政策授予的權限可允許他人對 example.com 和 marketing.example.com 上的託管區域 Z12345 執行 ChangeResourceRecordSets 動作。它使用 route53:ChangeResourceRecordSetsNormalizedRecordNames 條件金鑰來限制使用者僅能對符合指定名稱的記錄進行處置動作。
ForAllValues:StringEquals 是適用於多值金鑰的 IAM 條件運算子。上述政策中的條件僅在 ChangeResourceRecordSets 的所有變更都含有 example.com 的 DNS 名稱時才允許執行。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 條件運算子和具有多個索引鍵或值的 IAM 條件。
若要實作名稱中含有特定尾碼的權限,可在具有條件運算子 StringLike 或 StringNotLike 的政策中使用 IAM 萬用字元 (*)。以下策略會在當 ChangeResourceRecordSets 操作的所有變更都具有以「-beta.example.com」結尾的 DNS 名稱時允許執行。
注意
IAM 萬用字元與網域名稱萬用字元不同。如需有關在網域名稱中使用萬用字元的方式,請參閱下列範例。
授予他人可限制其對含萬用字元之網域名稱的 DNS 記錄進行存取的許可權限
下列許可政策授予的權限可允許他人對 example.com 上的託管區域 Z12345 執行 ChangeResourceRecordSets 動作。它會使用 route53:ChangeResourceRecordSetsNormalizedRecordNames 條件金鑰來限制使用者,使其只能對符合 *.example.com 的記錄採取處置動作。
\052 是 DNS 名稱中字元 * 的八進位碼,而 \052 中的 \ 則逸出為 \\,以便符合 JSON 語法。
透過授予許可權限來限制他人對特定 DNS 記錄的存取行為
下列許可政策授予的權限可允許他人對 example.com 上的託管區域 Z12345 執行 ChangeResourceRecordSets 動作。它使用三個條件金鑰的組合來限制使用者動作,只允許使用者建立或編輯具有特定 DNS 名稱和類型的 DNS 記錄。
授予許可權限以限制使用者的存取行為,使用者只能建立和編輯指定類型的 DNS 記錄
下列許可政策授予的權限可允許他人對 example.com 上的託管區域 Z12345 執行 ChangeResourceRecordSets 動作。它使用 route53:ChangeResourceRecordSetsRecordTypes 條件金鑰來限制使用者僅能對符合指定類型 (A 和 AAAA) 的記錄進行處置動作。
授予許可,指定 IAM 主體可在其中操作的 VPC
下列許可政策會授予許可,允許 vpc-id AssociateVPCWithHostedZone 所指定之 VPC 上的 DisassociateVPCFromHostedZone ListHostedZonesByVPCCreateVPCAssociationAuthorization、、CreateHostedZone、 和 DeleteVPCAssociationAuthorization動作。
重要
條件值的格式必須為 VPCId=<vpc-id>,VPCRegion=<region>。如果您在條件值中指定 VPC ARN,則條件索引鍵將不會生效。