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

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

IAM 教學課程:針對 ABAC 使用 SAML 工作階段標記

屬性為基礎的存取控制 (ABAC) 是一種授權策略,可根據屬性來定義許可。在中 AWS,這些屬性稱為標籤。您可以將標籤附加到 IAM 資源,包括 IAM 實體 (使用者或角色) 以及 AWS 資源。使用實體向其提出要求時 AWS,它們會成為主參與者,而這些主參與者包含標籤。

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

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

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

必要條件

如要執行步驟以使用 ABAC 的 SAML 工作階段標籤,您必須已具備以下項目:

  • 對 SAML 類型 IdP 的存取,可讓您使用特定屬性建立測試使用者。

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

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

  • 在 IAM 中體驗設定 SAML 類型的 IdP。如要檢視更多詳細資訊及更詳細 IAM 文件的連結,請參閱 使用 AssumeRoleWith SAML 傳遞工作階段標記

步驟 1:建立測試使用者

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

步驟 2:建立 ABAC 政策

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

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

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

步驟 3A:建立 SAML 角色

建立單一角色,該角色信任您的 SAML 身分提供者,以及您在步驟 1 中建立的 test-session-tags 使用者。ABAC 教學會使用具備不同角色標籤的不同角色。因為您是從您的 SAML IdP 傳遞工作階段標籤,您只需要一個角色。若要了解如何建立 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 從「範例公司 IdP」聯盟時擔任此角色。ExampleCorpProvider SAML 供應商是在 IAM 中定義。管理員已設定 SAML 聲明,傳遞三個必要的工作階段標籤。聲明可以傳遞其他標籤,但必須要有這三個標籤。身分的屬性可針對 cost-centeraccess-project 標籤具備任何值。但是,access-team 屬性值必須與 engqas 相符,才能指出身分是位於 Engineering 或 Quality Assurance 團隊。

步驟 3B:設定 SAML IdP

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

若要將這些屬性做為工作階段標籤傳遞,請在您的 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 管理權限,則這些原則不會限制該存取權。更多涉及多個政策時如何決定許可的詳細資訊,請參閱 決定是否允許或拒絕帳戶中的請求