IAM 教學課程:使用 的SAML工作階段標籤 ABAC - AWS Identity and Access Management

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

IAM 教學課程:使用 的SAML工作階段標籤 ABAC

屬性型存取控制 (ABAC) 是一種根據屬性定義許可的授權策略。在 中 AWS,這些屬性稱為標籤。您可以將標籤連接至IAM資源,包括IAM實體 (使用者或角色) 和 AWS 資源。當實體用於向 提出請求時 AWS,它們會成為主體,而這些主體包含標籤。

您也可以在擔任角色或與使用者聯合身分時傳遞工作階段標籤。然後您可以定義使用標籤條件索引鍵的政策,以根據主體的標籤來授與許可。當您使用標籤來控制對 AWS 資源的存取 ,您就是允許團隊和資源能夠用更少的 AWS 政策變更來增長。ABAC 政策比傳統 AWS 政策更靈活,需要您列出每個個別資源。如需有關 ABAC及其優於傳統政策的詳細資訊,請參閱 根據具有ABAC授權的屬性定義許可

如果您的公司使用 SAML型身分提供者 IdP ) 來管理公司使用者身分,您可以使用SAML屬性來控制 中的精細存取控制 AWS。屬性可包含成本中心識別符、使用者電子郵件地址、部門分類和專案指派。當您將這些屬性做為工作階段標籤傳遞時,您接著便可以根據這些工作階段標籤來控制對 AWS 的存取。

若要透過將SAML屬性傳遞給您的工作階段主體來完成ABAC教學課程,請使用本主題中包含IAM 教學課程:定義根據標籤存取 AWS 資源的許可的變更完成 中的任務。

必要條件

若要針對 執行使用SAML工作階段標籤的步驟ABAC,您必須已具有下列項目:

  • 存取 SAML型 IdP,您可以在其中建立具有特定屬性的測試使用者。

  • 以具有管理許可的使用者身分登入的能力。

  • 在 中建立和編輯IAM使用者、角色和政策的經驗 AWS Management Console。不過,如果您需要記住IAM管理程序的協助,ABAC教學課程會提供連結,供您檢視 step-by-step指示。

  • 在 中設定 SAML型 IdP 的經驗IAM。若要檢視更多詳細資訊和詳細IAM文件的連結,請參閱 使用 傳遞工作階段標籤 AssumeRoleWithSAML

步驟 1:建立測試使用者

請跳過 步驟 1:建立測試使用者 中的說明。由於您的身分是在提供者中定義的,因此您不需要為員工新增IAM使用者。

步驟 2:建立ABAC政策

請遵循 中的指示,在 中步驟 2:建立ABAC政策建立指定的受管政策IAM。

步驟 3:建立和設定SAML角色

當您使用 的ABAC教學課程時SAML,您必須執行其他步驟來建立角色、設定 SAML IdP 和啟用 AWS Management Console 存取。如需詳細資訊,請參閱步驟 3:建立角色

步驟 3A建立SAML角色

建立單一角色,信任SAML您的身分提供者和您在步驟 1 中建立test-session-tags的使用者。ABAC 教學課程使用具有不同角色標籤的個別角色。由於您要從 IdP SAML 傳遞工作階段標籤,因此只需要一個角色。若要了解如何建立 SAML型角色,請參閱 建立 SAML 2.0 聯合 (主控台) 的角色

將角色命名為 access-session-tags。將 access-same-project-team 許可政策連接到角色。編輯角色信任政策,以使用以下政策。如需如何編輯角色信任關係的詳細說明,請參閱 更新角色信任原則

下列角色信任政策允許SAML您的身分提供者和test-session-tags使用者擔任該角色。當 SAML 身分提供者和該使用者擔任角色時,必須傳遞三個指定工作階段標籤。sts:TagSession 動作是允許傳遞工作階段標籤的必要項目。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSamlIdentityAssumeRole", "Effect": "Allow", "Action": [ "sts:AssumeRoleWithSAML", "sts:TagSession" ], "Principal": {"Federated":"arn:aws:iam::123456789012:saml-provider/ExampleCorpProvider"}, "Condition": { "StringLike": { "aws:RequestTag/cost-center": "*", "aws:RequestTag/access-project": "*", "aws:RequestTag/access-team": [ "eng", "qas" ] }, "StringEquals": {"SAML:aud": "https://signin.aws.amazon.com/saml"} } } ] }

AllowSamlIdentityAssumeRole陳述式可讓工程和品質保證團隊的成員在 AWS 從 Example Corporation IdP 聯合到 時擔任此角色。ExampleCorpProvider SAML 提供者在 中定義IAM。管理員已設定SAML聲明,以傳遞三個必要的工作階段標籤。聲明可以傳遞其他標籤,但必須要有這三個標籤。身分的屬性可針對 cost-centeraccess-project 標籤具備任何值。但是,access-team 屬性值必須與 engqas 相符,才能指出身分是位於 Engineering 或 Quality Assurance 團隊。

步驟 3B設定 SAML IdP

設定您的 SAML IdP,將 cost-centeraccess-projectaccess-team 屬性傳遞為工作階段標籤。如需詳細資訊,請參閱使用 傳遞工作階段標籤 AssumeRoleWithSAML

若要將這些屬性傳遞為工作階段標籤,請在SAML宣告中包含下列元素。

<Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:cost-center"> <AttributeValue>987654</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:access-project"> <AttributeValue>peg</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/PrincipalTag:access-team"> <AttributeValue>eng</AttributeValue> </Attribute>

步驟 3C:啟用主控台存取

為您的聯合身分SAML使用者啟用主控台存取。如需詳細資訊,請參閱啟用 SAML 2.0 聯合身分的使用者存取 AWS Management Console

步驟 4:測試建立秘密

AWS Management Console 使用 access-session-tags角色聯合到 。如需詳細資訊,請參閱啟用 SAML 2.0 聯合身分的使用者存取 AWS Management Console。然後遵循 步驟 4:測試建立秘密 中的說明來建立秘密。使用具有屬性的不同SAML身分,以符合ABAC教學課程中指示的標籤。如需詳細資訊,請參閱步驟 4:測試建立秘密

步驟 5:測試檢視秘密

遵循 步驟 5:測試檢視秘密 中的說明來檢視您在上一個步驟中建立的秘密。使用具有屬性的不同SAML身分,以符合ABAC教學課程中指示的標籤。

步驟 6:測試可擴展性

遵循 步驟 6:測試可擴展性 中的說明來測試可擴展性。透過在 SAML型 IdP 中新增具有下列屬性的新身分來執行此操作:

  • cost-center = 101010

  • access-project = cen

  • access-team = eng

步驟 7:測試更新和刪除秘密

遵循 步驟 7:測試更新和刪除秘密 中的說明來更新和刪除秘密。使用具有屬性的不同SAML身分,以符合ABAC教學課程中指示的標籤。

重要

刪除您建立的所有秘密來避免產生費用。如需關於 Secrets Manager 定價的詳細資訊,請參閱 AWS Secrets Manager 定價

Summary

您現在已成功完成使用SAML工作階段標籤和資源標籤進行許可管理所需的所有步驟。

注意

您已新增僅在特定條件下允許執行動作的政策。如果您將不同的政策套用至具有更廣泛許可的使用者或角色,則動作可能不會受限為需要標記。例如,如果您使用 AdministratorAccess AWS 受管政策為使用者提供完整的管理許可,則這些政策不會限制該存取。更多涉及多個政策時如何決定許可的詳細資訊,請參閱 強制執行程式碼邏輯如何 AWS 評估允許或拒絕存取的請求