本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 IAM 政策條件進行精細存取控制
在 Route 53 中,您可以在使用 IAM 政策授予許可時指定條件 (請參閱 存取控制)。例如,您可以:
-
授予許可以允許他人存取單一資源記錄集。
-
授予許可,以允許使用者存取託管區域中特定 DNS 記錄類型的所有資源記錄集,例如 A 和 AAAA 記錄。
-
授予許可能讓使用者存取其名稱包含特定字串的資源記錄集。
-
授予許可,允許使用者在 Route 53 主控台
CREATE | UPSERT | DELETE
上或使用 ChangeResourceRecordSets 時,僅執行動作的子集API。 -
授予許可,允許使用者將私有託管區域與特定 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 帳戶,例如 。
您可以使用 IAM 使用者指南中的 Access Analyzer 或政策模擬器,驗證您的政策是否如預期授予或限制許可。您也可以透過將 IAM 政策套用至測試使用者或角色來驗證許可,以執行 Route 53 操作。
指定條件:使用條件金鑰
AWS 為所有支援 IAM 進行存取控制 AWS 的服務提供一組預先定義的條件金鑰 (AWS全條件金鑰)。例如,您可以使用 aws:SourceIp
條件金鑰先檢查申請者的 IP 地址,再允許執行動作。如需詳細資訊和 AWS-wide 金鑰清單,請參閱 IAM 使用者指南中的條件可用金鑰。
注意
Route 53 不支援標籤型條件金鑰。
下表顯示適用於 Route 53 的 Route 53 服務特定條件金鑰。
Route 53 條件金鑰 | API 操作 | 值類型 | 描述 |
---|---|---|---|
route53:ChangeResourceRecordSetsNormalizedRecordNames |
多重值 |
代表 DNS 請求中的 ChangeResourceRecordSets 記錄名稱清單。若要取得預期的行為,DNS 政策中的 IAM 名稱必須標準化如下:
|
|
route53:ChangeResourceRecordSetsRecordTypes |
多重值 |
代表 請求中的 DNS 記錄類型清單
|
|
route53:ChangeResourceRecordSetsActions |
多重值 |
收到
|
|
route53:VPCs |
AssociateVPCWithHostedZoneWord |
多重值 |
代表 AssociateVPCWithHostedZone 、、DisassociateVPCFromHostedZone 、CreateVPCAssociationAuthorization 、 ListHostedZonesByVPC 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
條件金鑰來限制使用者僅能對符合指定名稱的記錄進行處置動作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["example.com", "marketing.example.com"] } } } ] }
ForAllValues:StringEquals
是套用至多值金鑰的 IAM 條件運算子。上述政策中的條件只有在 中的所有變更都ChangeResourceRecordSets
具有 https://example.com 的 DNS 名稱時,才允許操作。如需詳細資訊,請參閱 Word 使用者指南中的 IAM 條件運算子和具有多個索引鍵或值的 IAM 條件。 IAM
若要實作符合名稱與特定尾碼的許可,您可以在 政策中使用 IAM 萬用字元 (*) 搭配條件運算子StringLike
或 StringNotLike
。當操作中的所有變更的 DNS 名稱以 “-beta.example.com” 結尾時,下列政策將允許 ChangeResourceRecordSets
操作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringLike":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["*-beta.example.com"] } } } ] }
注意
IAM 萬用字元與網域名稱萬用字元不同。如需有關在網域名稱中使用萬用字元的方式,請參閱下列範例。
授予許可,以限制對符合包含萬用字元之網域名稱的 DNS 記錄的存取
下列許可政策授予的權限可允許他人對 example.com 上的託管區域 Z12345 執行 ChangeResourceRecordSets
動作。它會使用 route53:ChangeResourceRecordSetsNormalizedRecordNames
條件金鑰來限制使用者,使其只能對符合 *.example.com 的記錄採取處置動作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["\\052.example.com"] } } } ] }
\052
是 DNS 名稱中字元 * 的八進位碼,在 \
中\052
會逸出\\
以遵循 JSON 語法。
授予許可,限制對特定 DNS 記錄的存取
下列許可政策授予的權限可允許他人對 example.com 上的託管區域 Z12345 執行 ChangeResourceRecordSets
動作。它使用三個條件索引鍵的組合來限制使用者動作,僅允許建立或編輯具有特定 DNS 名稱和類型的 DNS 記錄。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["example.com"], "route53:ChangeResourceRecordSetsRecordTypes": ["MX"], "route53:ChangeResourceRecordSetsActions": ["CREATE", "UPSERT"] } } } ] }
授予許可,限制僅建立和編輯指定類型 DNS 記錄的存取權
下列許可政策授予的權限可允許他人對 example.com 上的託管區域 Z12345 執行 ChangeResourceRecordSets
動作。它使用 route53:ChangeResourceRecordSetsRecordTypes
條件索引鍵,僅在符合指定類型 (A 和 AAAA) 的記錄上限制使用者動作。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsRecordTypes": ["A", "AAAA"] } } } ] }
授予許可,指定 VPC 主體可在其中操作的 IAM
下列許可政策授予許可,允許 vpc-id AssociateVPCWithHostedZone
所指定 VPC 上的 DisassociateVPCFromHostedZone
ListHostedZonesByVPC
CreateVPCAssociationAuthorization
、、CreateHostedZone
、 和 DeleteVPCAssociationAuthorization
動作。
重要
條件值的格式必須為 VPCId=<vpc-id>,VPCRegion=<region>
。如果您在條件值ARN中指定 VPC,條件索引鍵將不會生效。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "route53:*" ], "Resource": [ "*" ], "Condition": { "ForAllValues:StringLike": { "route53:VPCs": [ "VPCId=<vpc-id>,VPCRegion=<region>" ] } } }, { "Sid": "Statement2", "Effect": "Allow", "Action": "ec2:DescribeVpcs", "Resource": "*" } ] }