使用 IAM 政策條件進行精細定義存取控制,以便管理資源記錄集 - Amazon Route 53

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 IAM 政策條件進行精細定義存取控制,以便管理資源記錄集

您在 Route 53 中授予資源記錄集的許可時,可以指定條件,以決定許可政策的生效方式。

您可在 Route 53 中指定使用 IAM 政策授予許可時的條件 (請參閱 存取控制)。例如,您可以:

  • 授予許可以允許他人存取單一資源記錄集。

  • 授予許可能讓使用者存取託管區域中特定 DNS 記錄類型的所有資源記錄集,例如 A 和 AAAA 記錄。

  • 授予許可能讓使用者存取其名稱包含特定字串的資源記錄集。

  • 授予權限以允許使用者僅在 Route 53 主控台上或使用 ChangeResourceRecordSetsAPI 時執行CREATE | UPSERT | DELETE動作的子集。

您也可以建立將任何精細權限合併在一起的權限。

使用 IAM Condition 元素來實作精細定義存取控制政策。在許可政策中新增 Condition 元素,即可根據業務需求而允許或拒絕對 Route 53 資源記錄集的存取行為。例如,您的 IAM 政策可以限制對託管區域中個別 DNS 記錄的存取行為。然後,您可以將政策套用至使用者、群組或角色。

正規化條件金鑰值

您在政策條件中輸入的值必須進行格式化或標準化,如下所示:

如果使用 route53:ChangeResourceRecordSetsNormalizedRecordNames

  • 所有字母必須小寫。

  • DNS 名稱不可有行尾點號。

  • a—z、0-9、- (連字號)、_ (底線) 和 . (用來分隔標籤的句點) 必須使用以下格式的逸出碼:\三位數八進位碼。例如,\052 是字元 * 的八進位碼。

如果使用 route53:ChangeResourceRecordSetsActions,則數值可能是下列任何一個值,且必須是大寫:

  • CREATE

  • UPSERT (更新插入)

  • DELETE

如果使用 route53:ChangeResourceRecordSetsRecordTypes

  • 該值必須是大寫字母,並且可能是任何 Route 53 支援的 DNS 記錄類型。如需詳細資訊,請參閱 支援的 DNS 記錄類型

重要

您必須遵循這些慣例,才能授予別人許可,進而允許或限制別人能做的動作。

您可以使用 Access AnalyzerIAM 使用者指南中的政策模擬器來驗證您的政策是否如預期授予或限制他人權限。將 IAM 政策套用於要執行 Route 53 操作的測試使用者或測試角色也可以驗證許可。

指定條件:使用條件金鑰

AWS 為支援 IAM 進行存取控制的所有 AWS 服務提供一組預先定義的條件金鑰 (AWS寬度條件金鑰)。例如,您可以使用 aws:SourceIp 條件金鑰先檢查申請者的 IP 地址,再允許執行動作。如需詳細資訊以及 AWS通用金鑰的清單,請參閱《IAM 使用者指南》中的可用條件金鑰

注意

Route 53 不支援標籤型條件金鑰。

下表顯示適用於資源記錄集的 Route 53 服務專屬條件金鑰。

Route 53 條件金鑰 API 操作 值類型 描述
route53:ChangeResourceRecordSetsNormalizedRecordNames

ChangeResourceRecordSets

多重值

代表要求中的 DNS 記錄名稱清單ChangeResourceRecordSets。為了獲得預期反應,IAM 政策中的 DNS 名稱必須依照下列方式進行標準化:

  • 所有字母必須小寫。

  • DNS 名稱不可有行尾點號。

  • a 到 z、0 到 9、- (連字號)、_ (底線) 和 . (用來分隔標籤的句點) 必須使用以下格式的逸出碼:\三位數八進位碼。

route53:ChangeResourceRecordSetsRecordTypes

ChangeResourceRecordSets

多重值

收到 ChangeResourceRecordSets 請求時,顯示 DNS 記錄類型清單。

ChangeResourceRecordSetsRecordTypes 可能是 Route 53 支援的任何 DNS 記錄類型。如需詳細資訊,請參閱 支援的 DNS 記錄類型。政策的所有內容都必須以大寫輸入。

route53:ChangeResourceRecordSetsActions

ChangeResourceRecordSets

多重值

收到 ChangeResourceRecordSets 請求時,顯示動作清單。

ChangeResourceRecordSetsActions 可能是下列任何一個值 (必須是大寫):

  • CREATE

  • UPSERT (更新插入)

  • DELETE

範例政策:使用條件進行精細定義存取

本節中的每個範例都會將 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 的所有變更都含有 example.com 的 DNS 名稱時才允許執行。如需詳細資訊,請參閱《IAM 使用者指南》中的 IAM 條件運算子具有多個索引鍵或值的 IAM 條件

若要實作名稱中含有特定尾碼的權限,可在具有條件運算子 StringLikeStringNotLike 的政策中使用 IAM 萬用字元 (*)。以下策略會在當 ChangeResourceRecordSets 操作的所有變更都具有以「-beta.example.com」結尾的 DNS 名稱時允許執行。

{ "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"] } } } ] }