

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

# 在 IAM 中建立 SAML 身分提供者
<a name="id_roles_providers_create_saml"></a>

IAM SAML 2.0 身分提供者是 IAM 中的實體，其負責描述支援 [SAML 2.0 (安全性聲明標記語言 2.0)](https://wiki.oasis-open.org/security) 標準的外部身分提供者 (IdP) 服務。當您想要在 Shibboleth 或 Active Directory Federation Services 和 等 SAML 相容 IdP 之間建立信任時 AWS，您可以使用 IAM 身分提供者，以便您的使用者可以存取 AWS 資源。在 IAM 信任政策中，IAM SAML 身分提供者將作為主體。

如需有關此案例的詳細資訊，請參閱 [SAML 2.0 聯合身分](id_roles_providers_saml.md)。

您可以在 中或使用 Tools for Windows PowerShell 或 AWS API 呼叫 AWS 管理主控台 AWS CLI來建立和管理 IAM 身分提供者。

在您建立 SAML 提供者之後，您必須建立一個或多個 IAM 角色。角色是 中的身分 AWS ，沒有自己的登入資料 （與使用者相同）。但在此情況中，角色會動態指派給 SAML 聯合身分主體，而該主體由 IdP 進行驗證。該角色允許您的 IdP 請求暫時性安全憑證以存取 AWS。指派給角色的政策會決定允許使用者在其中執行的操作 AWS。若要為 SAML 聯合身分建立角色，請參閱 [為第三方身分提供者建立角色](id_roles_create_for-idp.md)。

最後，在建立角色之後，您可以使用有關 的資訊 AWS 和您希望 SAML 聯合委託人使用的角色來設定 IdP，以完成 SAML 信任。這是指在您的 IdP 和 AWS之間設定依賴方信任。若要設定依賴方信任，請參閱[使用依賴方信任設定您的 SAML 2.0 IdP 並新增宣告](id_roles_providers_create_saml_relying-party.md)。

**Topics**
+ [先決條件](#idp-manage-identityprovider-prerequisites)
+ [建立並管理 IAM SAML 身分提供者 (主控台)](#idp-manage-identityprovider-console)
+ [管理 SAML 加密金鑰](#id_federation_manage-saml-encryption)
+ [建立並管理 IAM SAML 身分提供者 (AWS CLI)](#idp-create-identityprovider-CLI)
+ [建立和管理 IAM SAML 身分提供者 (AWS API)](#idp-create-identityprovider-API)
+ [後續步驟](#id_roles_create-for-saml-next-steps)

## 先決條件
<a name="idp-manage-identityprovider-prerequisites"></a>

您必須從 IdP 取得下列資訊，然後才能建立 SAML 身分提供者。
+ 從 IdP 取得 SAML 中繼資料文件。此文件包括發行者的名稱、到期資訊以及可用於驗證從 IdP 接收的 SAML 身分驗證回應 (宣告) 的金鑰。若要產生中繼資料文件，請使用您的外部 IdP 提供的身分管理軟體。
**重要**  
此中繼資料檔案包括發行者名稱、過期資訊以及可用於驗證從 IdP 接收的 SAML 身分驗證回應 (聲明) 的金鑰。中繼資料檔案必須以 UTF-8 格式編碼，並且不含位元組順序記號 (BOM)。若要移除 BOM，您可以使用文字編輯工具，例如 Notepad\+\+，將檔案編碼為 UTF-8。  
包含在 SAML 中繼資料文件中的 X.509 憑證必須使用大小至少有 1024 位元的金鑰。此外，X.509 憑證也必須沒有任何重複的擴充。您可以使用擴充，但這些擴充只能在憑證中出現一次。如果 X.509 憑證不符合任一條件，IdP 建立會失敗，並傳回 "Unable to parse metadata" 錯誤。  
如 [SAML V2.0 Metadata Interoperability Profile Version 1.0](https://docs.oasis-open.org/security/saml/Post2.0/sstc-metadata-iop-os.html) 所定義，IAM 既不會評估 SAML 中繼資料文件中的 X.509 憑證是否過期，也不會對其採取動作。如果您擔心過期的 X.509 憑證，建議您監控憑證過期日期，並根據組織的治理和安全政策輪換憑證。
+ 如果選擇啟用 SAML 加密，必須使用 IdP 產生私有金鑰檔案，並以 .pem 檔案格式將此檔案上傳至 IAM SAML 組態。 AWS STS 需要此私有金鑰，才能解密對應於上傳至 IdP 之公有金鑰的 SAML 回應。支援下列演算法：
  + 加密演算法
    + AES-128
    + AES-256
    + RSA-OAEP
  + 金鑰傳輸演算法
    + AES-CBC
    + AES-GCM

  如需產生私有金鑰的步驟，請參閱身分提供者的文件。
**注意**  
IAM Identity Center 和 Amazon Cognito 不支援來自 IAM SAML 身分提供者的加密 SAML 聲明。您可以間接將對加密 SAML 聲明的支援新增至 Amazon Cognito 身分集區與 Amazon Cognito 使用者集區的聯合。使用者集區具有獨立 IAM SAML 聯合身分的 SAML 聯合身分，並支援 [SAML 簽署和加密](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html)。雖然此功能不會直接延伸至身分集區，但使用者集區可以是身分集區的 IdP。若要將 SAML 加密與身分集區搭配使用，請將具有加密功能的 SAML 提供者新增至作為身分集區的 IdP 的使用者集區。  
您的 SAML 提供者必須能夠使用使用者集區提供的金鑰來加密 SAML 聲明。使用者集區不會接受使用 IAM 提供的憑證加密的聲明。

如需如何設定許多可用 IdPs 以使用的指示 AWS，包括如何產生所需的 SAML 中繼資料文件，請參閱 [將第三方 SAML 解決方案供應商與 整合 AWS](id_roles_providers_saml_3rd-party.md)。

如需 SAML 聯合身分的協助，請參閱[對 SAML 聯合身分進行疑難排解](troubleshoot_saml.md)。

## 建立並管理 IAM SAML 身分提供者 (主控台)
<a name="idp-manage-identityprovider-console"></a>

您可以使用 AWS 管理主控台 來建立、更新和刪除 IAM SAML 身分提供者。如需 SAML 聯合身分的協助，請參閱[對 SAML 聯合身分進行疑難排解](troubleshoot_saml.md)。

**建立 IAM SAML 身分提供者 (主控台)**

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，請選擇 **Identity providers** (身分提供者)，然後選擇 **Add provider** (新增提供者)。

1. 在 **Configure provider** (設定提供者) 中，選擇 **SAML**。

1. 輸入身分提供者的名稱。

1. 對於 **Metadata document** (中繼資料文件)，選擇 **Choose file** (選擇檔案)，並指定您在 [先決條件](#idp-manage-identityprovider-prerequisites) 下載的 SAML 中繼資料文件。
**注意**  
身分提供者顯示**的有效截止日期**由 IAM 在提供者建立時間設定。它不會反映 SAML 中繼資料文件中的 `validUntil`或 `cacheDuration` 屬性。IAM 不會使用這些中繼資料屬性來判斷**有效截止日期**。  
在 SAML 身分驗證期間，IAM 不會對 SAML 中繼資料文件或 SAML 中繼資料文件中的 X.509 憑證過期進行評估或採取動作。SAML 身分驗證有效性會在宣告層級強制執行，並在宣告的 `Conditions`和 `SubjectConfirmationData`元素中使用 `NotOnOrAfter` 屬性。如果您擔心過期的 X.509 憑證，建議您監控憑證過期日期，並根據組織的治理和安全政策輪換憑證。

1. (選用) 在 **SAML 加密**欄位中，選擇**選擇檔案**，然後選取您在 [先決條件](#idp-manage-identityprovider-prerequisites) 中建立的私有金鑰檔案。選擇**需要加密**以僅接受來自 IdP 的加密請求。

1. (選用) 對於 **Add tags** (新增標籤)，您可以新增鍵值組，以協助您識別和整理 IdP。您也可以使用標籤來控制對 AWS 資源的存取。若要進一步了解如何標記 SAML 身分提供者，請參閱[標記 IAM SAML 身分提供者](id_tags_saml.md)。

   選擇 **Add tag (新增標籤)**。輸入每個標籤鍵值組的值。

1. 請確認您提供的資訊。完成後，請選擇 **Add provider** (新增提供者)。

1. 將 IAM 角色指派給您的身分提供者。此角色提供身分提供者管理的外部使用者身分許可，以存取您帳戶中 AWS 的資源。若要深入了解如何建立聯合身分角色，請參閱 [為第三方身分提供者建立角色](id_roles_create_for-idp.md)。
**注意**  
角色信任政策中使用的 SAML IDP 必須與角色所在的帳戶相同。

**刪除 SAML 提供者 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，請選擇 **Identity providers** (身分提供者)。

1. 在您要刪除的身分提供者旁邊，選取選項按鈕。

1. 選擇 **Delete** (刪除)。新的視窗將開啟。

1. 在欄位中輸入單字 `delete`，確認您要刪除提供者。再選擇 **Delete** (刪除)。

## 管理 SAML 加密金鑰
<a name="id_federation_manage-saml-encryption"></a>

您可以將 IAM SAML 供應商設定為從外部 IdP 接收 SAML 回應中的加密聲明。使用者可以在 AWS 中使用加密的 SAML 聲明擔任角色，方法是呼叫 `[sts:AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)`。

SAML 加密可確保聲明在透過中介或第三方傳遞時是安全的。此外，此功能可協助您符合 FedRAMP 或任何強制要求 SAML 聲明加密的內部合規政策要求。

若要設定 IAM SAML 身分提供者，請參閱[在 IAM 中建立 SAML 身分提供者](#id_roles_providers_create_saml)。如需 SAML 聯合身分的協助，請參閱[對 SAML 聯合身分進行疑難排解](troubleshoot_saml.md)。

### 輪換 SAML 加密金鑰
<a name="id_federation_manage-saml-keys-rotate"></a>

IAM 使用您上傳至 IAM SAML 提供者的私有金鑰，從 IdP 解密加密的 SAML 聲明。您可以為每個身分提供者儲存最多兩個私有金鑰檔案，讓您視需要輪換私有金鑰。儲存兩個檔案時，每個請求會先嘗試以最新**新增**日期解密，然後 IAM 會嘗試以最舊**新增**日期解密請求。

1. 登入 AWS 管理主控台 並開啟位於 https：//[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 的 IAM 主控台。

1. 在導覽窗格中，請選擇**身分提供者**，然後從清單中選取提供者。

1. 選擇 **SAML 加密**索引標籤，然後選擇**新增金鑰**。

1. 選取**選擇檔案**，並上傳您從 IdP 下載的私有金鑰作為 .pem 檔案。然後，選擇**新增金鑰**。

1. 在 **SAML 解密的私有金鑰**區段中，選取過期的私有金鑰檔案，然後選擇**移除**。建議在新增私有金鑰之後移除過期的私有金鑰，確保首次嘗試解密聲明能夠成功。

## 建立並管理 IAM SAML 身分提供者 (AWS CLI)
<a name="idp-create-identityprovider-CLI"></a>

您可以使用 AWS CLI 來建立、更新和刪除 SAML 供應商。如需 SAML 聯合身分的協助，請參閱[對 SAML 聯合身分進行疑難排解](troubleshoot_saml.md)。

**建立 IAM 身分提供者並上傳中繼資料文件 (AWS CLI)**
+ 執行此命令：[https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-saml-provider.html)

**若要更新 IAM SAML 身分提供者 (AWS CLI)**

您可以更新中繼資料檔案、SAML 加密設定，以及輪換 IAM SAML 提供者的私有金鑰解密檔案。若要輪換私有金鑰，請在個別請求中新增私有金鑰，然後移除舊金鑰。如需有關輪換私有金鑰的詳細資訊，請參閱 [管理 SAML 加密金鑰](#id_federation_manage-saml-encryption)。
+ 執行此命令：[https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/update-saml-provider.html)

**標記現有 IAM 身分提供者 (AWS CLI)**
+ 執行此命令：[https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/tag-saml-provider.html)

**列出現有 IAM 身分提供者的標籤 (AWS CLI)**
+ 執行此命令：[https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-provider-tags.html)

**移除現有 IAM 身分提供者的標籤 (AWS CLI)**
+ 執行此命令：[https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/untag-saml-provider.html)

**刪除 IAM SAML 身分提供者 (AWS CLI)**

1. (選用) 若要列出所有提供者的資訊，例如 ARN、建立日期和過期日期，請執行下列命令：
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-saml-providers.html)

1. (選用) 若要取得有關特定提供者的資訊 (例如 ARN、建立日期、過期日期、加密設定和私有金鑰資訊)，請執行下列命令：
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-saml-provider.html)

1. 若要刪除 IAM 身分提供者，請執行下列命令：
   + [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-saml-provider.html)

## 建立和管理 IAM SAML 身分提供者 (AWS API)
<a name="idp-create-identityprovider-API"></a>

您可以使用 AWS API 來建立、更新和刪除 SAML 供應商。如需 SAML 聯合身分的協助，請參閱[對 SAML 聯合身分進行疑難排解](troubleshoot_saml.md)。

**建立 IAM 身分提供者並上傳中繼資料文件 (AWS API)**
+ 呼叫此操作：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateSAMLProvider.html)

**更新 IAM SAML 身分提供者 (AWS API)**

您可以更新中繼資料檔案、SAML 加密設定，以及輪換 IAM SAML 提供者的私有金鑰解密檔案。若要輪換私有金鑰，請在個別請求中新增私有金鑰，然後移除舊金鑰。如需有關輪換私有金鑰的詳細資訊，請參閱 [管理 SAML 加密金鑰](#id_federation_manage-saml-encryption)。
+ 呼叫此操作：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateSAMLProvider.html)

**標記現有的 IAM 身分提供者 (AWS API)**
+ 呼叫此操作：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_TagSAMLProvider.html)

**列出現有 IAM 身分提供者 (AWS API) 的標籤**
+ 呼叫此操作：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviderTags.html)

**移除現有 IAM 身分提供者 (AWS API) 上的標籤**
+ 呼叫此操作：[https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UntagSAMLProvider.html)

**刪除 IAM 身分提供者 (AWS API)**

1. (選用) 若要列出所有 IdP 的資訊，例如 ARN、建立日期和過期，請呼叫下列操作：
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListSAMLProviders.html)

1. (選用) 若要取得有關特定提供者的資訊 (例如 ARN、建立日期、過期日期、加密設定和私有金鑰資訊)，請呼叫下列操作：
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetSAMLProvider.html)

1. 若要刪除 IdP，請呼叫下列操作：
   + [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSAMLProvider.html)

## 後續步驟
<a name="id_roles_create-for-saml-next-steps"></a>

建立 SAML 身分提供者之後，使用 IdP 設定依賴方信任。您也可以在政策中使用來自 IdP 身分驗證回應的宣告，來控制對角色的存取。
+ 您必須告知 IdP AWS 作為服務提供者。這稱為在 IdP 和 AWS之間新增依賴方信任。新增依賴方信任的過程，取決於您使用哪種 IdP。如需詳細資訊，請參閱[使用依賴方信任設定您的 SAML 2.0 IdP 並新增宣告](id_roles_providers_create_saml_relying-party.md)。
+ 當 IdP 將包含宣告的回應傳送到 時 AWS，許多傳入宣告會映射到 AWS 內容索引鍵。您可以利用 Condition 元素在 IAM 政策中使用這些內容索引鍵，來控制對角色的存取。如需詳細資訊，請參閱[為身分驗證回應設定 SAML 聲明](id_roles_providers_create_saml_assertions.md)