

# IAM で SAML ID プロバイダーを作成する
<a name="id_roles_providers_create_saml"></a>

IAM SAML 2.0 ID プロバイダーは、[SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security) 基準をサポートする外部 ID プロバイダー (IdP) を記述する IAM のエンティティです。Shibboleth や Active Directory フェデレーションサービスなどの SAML 互換 IdP と AWS の間に信頼を確立して、ユーザーが AWS リソースにアクセスできるようにする場合は、IAM ID プロバイダーを使用します。IAM の SAML プロバイダーは IAM 信頼ポリシーでプリンシパルとして使用されます。

このシナリオの詳細については、「[SAML 2.0 フェデレーション](id_roles_providers_saml.md)」を参照してください。

AWS マネジメントコンソール または AWS CLI、Tools for Windows PowerShell、または AWS API 呼び出しを使用して IAM ID プロバイダーを作成および管理できます。

SAML プロバイダーを作成した後、IAM ロールを作成する必要があります。ロールは AWS のアイデンティティであり、それ自体には (ユーザーのような) 認証情報がありません。ただし、この例では IdP によって認証された SAML フェデレーティッドプリンシパルに対し、ロールは動的に割り当てられます。このロールで、IdP が AWS にアクセスするための一時的なセキュリティ認証情報をリクエストできるようにします。ロールに割り当てられたポリシーにより、ユーザーが AWS で実行できることが決定されます。SAML フェデレーション用のロールを作成するには、「[サードパーティー ID プロバイダーにロールを作成する](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 ID プロバイダーを作成および管理する (コンソール)](#idp-manage-identityprovider-console)
+ [SAML 暗号化キーの管理](#id_federation_manage-saml-encryption)
+ [IAM SAML ID プロバイダーを作成および管理する (AWS CLI)](#idp-create-identityprovider-CLI)
+ [IAM SAML ID プロバイダーを作成および管理する (AWS API)](#idp-create-identityprovider-API)
+ [次のステップ](#id_roles_create-for-saml-next-steps)

## 前提条件
<a name="idp-manage-identityprovider-prerequisites"></a>

SAML ID プロバイダーを作成する前に、IdP から次の情報を取得しておく必要があります。
+ IdP から SAML メタデータドキュメントを取得します。このドキュメントには発行者の名前、失効情報、およびキーが含まれており、これらを使用して、IdP から受け取った SAML 認証レスポンス (アサーション) を検証できます。メタデータドキュメントを生成するには、外部 IdP として提供されている ID 管理ソフトウェアを使用します。
**重要**  
このメタデータファイルには発行者の名前、失効情報、およびキーが含まれており、これらを使用して、IdP から受け取った SAML 認証レスポンス (アサーション) を検証できます。メタデータファイルはバイトオーダーマーク (BOM) なしで UTF-8 形式でエンコードする必要があります。BOM を削除するには、Notepad\+\+ などのテキスト編集ツールを使用して UTF-8 としてファイルをエンコードできます。  
SAML メタデータドキュメントの一部として含まれている X.509 証明書では、少なくとも 1024 ビットのキーサイズを使用する必要があります。また、X.509 証明書には、拡張領域が繰り返されていないことが必要です。拡張領域は使用できますが、証明書に 1 回しか出現できません。X.509 証明書がいずれかの条件を満たしていない場合、IdP の作成は失敗し、「メタデータを解析できない」エラーが返されます。  
[SAML V2.0 メタデータ相互運用性プロファイルバージョン 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

  プライベートキーを生成する手順については、ID プロバイダーのドキュメントを参照してください。
**注記**  
IAM Identity Center と Amazon Cognito は、IAM SAML ID プロバイダーからの暗号化された SAML アサーションをサポートしていません。Amazon Cognito ユーザープールとの Amazon Cognito アイデンティティプールフェデレーションに、暗号化された SAML アサーションのサポートを間接的に追加できます。ユーザープールには、IAM SAML フェデレーションとは無関係で、[SAML 署名と暗号化](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-SAML-signing-encryption.html)をサポートしている SAML フェデレーションがあります。この機能は ID プールに直接拡張されませんが、ユーザープールはアイデンティティプールへの IdP にすることができます。アイデンティティプールで SAML 暗号化を使用するには、アイデンティティプールへの IdP であるユーザープールに暗号化付きの SAML プロバイダーを追加します。  
SAML プロバイダーは、ユーザープールが提供するキーを使用して SAML アサーションを暗号化できる必要があります。ユーザープールは、IAM が提供した証明書で暗号化されたアサーションを受け入れません。

必要な SAML メタデータドキュメントの生成方法を含め、使用可能な多くの IdP を AWS と連携するように設定するステップについては、「[サードパーティーの SAML ソリューションプロバイダーを AWS に統合する](id_roles_providers_saml_3rd-party.md)」を参照してください。

SAML フェデレーションの詳細については、「[Troubleshooting SAML federation](troubleshoot_saml.md)」を参照してください。

## IAM SAML ID プロバイダーを作成および管理する (コンソール)
<a name="idp-manage-identityprovider-console"></a>

AWS マネジメントコンソール​ を使用して、IAM SAML ID プロバイダーの作成、更新、および削除を実行できます。SAML フェデレーションの詳細については、「[Troubleshooting SAML federation](troubleshoot_saml.md)」を参照してください。

**IAM SAML ID プロバイダーを作成するには (コンソール)**

1. AWS マネジメントコンソール にサインインして、IAM コンソール [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) を開きます。

1. ナビゲーションペインで、**[ID プロバイダー]** を選択し、**[プロバイダーを追加]** を選択します。

1. **[プロバイダーの設定]** で、**[SAML]** を選択します。

1. ID プロバイダーの名前を入力します。

1. **[メタデータドキュメント]** で、**[ファイルを選択]** を選択し、[前提条件](#idp-manage-identityprovider-prerequisites) でダウンロードした SAML メタデータドキュメントを指定します。
**注記**  
SAML メタデータドキュメント内の `validUntil` または `cacheDuration` 属性は、ID プロバイダーの **[有効期限]** 日を定義します。SAML メタデータドキュメントに有効期間属性が含まれていない場合、**[有効期限]** 日が X.509 証明書の有効期限と一致しなくなります。  
IAM は、SAML メタデータドキュメント内の X.509 証明書の有効期限切れに対して評価やアクションを実行しません。期限切れの X.509 証明書について懸念がある場合は、組織のガバナンスとセキュリティポリシーに従って証明書の有効期限をモニタリングし、証明書をローテーションすることをお勧めします。

1. (オプション) **SAML 暗号化**で、**[ファイルの選択]** を選択し、[前提条件](#idp-manage-identityprovider-prerequisites) で作成したプライベートキーファイルを選択します。IdP からの暗号化されたリクエストのみを受け入れるには、**[Require encryption]** を選択します。

1. (オプション) [**Add tags (タグの追加)**] では、キーバリューのペアを追加して IdP の特定と整理を行うことができます。タグを使用して、AWS リソースへのアクセスを制御することもできます。SAML ID プロバイダーのタグ付けの詳細については、「[IAM SAML ID プロバイダーにタグ付けする](id_tags_saml.md)」を参照してください。

   **[タグを追加]** を選択します。タグキーバリューのペアごとに値を入力します。

1. 入力した情報を確認します。完了したら、**[プロバイダーを追加]** を選択します。

1. ID プロバイダーに IAM ロールを割り当てます。このロールは、ID プロバイダーによって管理される外部ユーザー ID に、アカウント内の AWS リソースへのアクセス許可を付与します。ID フェデレーション用のロールの作成の詳細については、「[サードパーティー ID プロバイダーにロールを作成する](id_roles_create_for-idp.md)」をご参照ください。
**注記**  
ロール信頼ポリシーで使用される SAML IDP は、そのロールと同じアカウントにある必要があります。

**SAML プロバイダーを削除するには (コンソール)**

1. AWS マネジメントコンソール にサインインして、IAM コンソール [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) を開きます。

1. ナビゲーションペインで、**[ID プロバイダー]** を選択します。

1. 削除する ID プロバイダーの横にあるラジオボタンをオンにします。

1. **[削除]** を選択します。新しいウィンドウが開きます。

1. フィールドに単語 `delete` を入力して、プロバイダーを削除することを確認します。その後、**[削除]** をクリックします。

## SAML 暗号化キーの管理
<a name="id_federation_manage-saml-encryption"></a>

外部 IdP からの SAML レスポンスで暗号化されたアサーションを受信するように IAM SAML プロバイダーを設定できます。ユーザーは、`[sts:AssumeRoleWithSAML](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)` を呼び出して暗号化された SAML アサーションを使用して AWS でロールを引き受けることができます。

SAML の暗号化により、仲介者や第三者を通じて渡されたアサーションの安全を確保できます。さらに、この機能は、SAML アサーションの暗号化を義務付ける FedRAMP または内部コンプライアンスポリシー要件を満たすのに役立ちます。

IAM SAML ID プロバイダーを設定するには、「[IAM で SAML ID プロバイダーを作成する](#id_roles_providers_create_saml)」を参照してください。SAML フェデレーションの詳細については、「[Troubleshooting SAML federation](troubleshoot_saml.md)」を参照してください。

### SAML 暗号化キーのローテーション
<a name="id_federation_manage-saml-keys-rotate"></a>

IAM は、IAM SAML プロバイダーにアップロードしたプライベートキーを使用して、IdP から暗号化された SAML アサーションを復号化します。ID プロバイダーごとに最大 2 つのプライベートキーファイルを保存できるため、必要に応じてプライベートキーをローテーションできます。2 つのファイルを保存すると、各リクエストはまず、最新の **[追加日]** で復号しようとします。次に、IAM は最も古い **[追加日]** でリクエストの復号を試みます。

1. AWS マネジメントコンソール にサインインして、IAM コンソール [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) を開きます。

1. ナビゲーションペインで、**[ID プロバイダー]** を選択し、次にリストから自分のプロバイダーを選択します。

1. **[SAML encryption]** タブを選択し、**[新しいキーを追加]** を選択します。

1. **[ファイルを選択]** を選択し、IdP からダウンロードしたプライベートキーを .pem ファイルとしてアップロードします。次に、**[キーを追加]** を選択します。

1. **[Private keys for SAML decryption]** セクションで期限切れのプライベートキーファイルを選択し、**[削除]** を選択します。アサーションの復号が一度で成功するように、新しいプライベートキーを追加した後には、期限切れのプライベートキーを削除することをお勧めします。

## IAM SAML ID プロバイダーを作成および管理する (AWS CLI)
<a name="idp-create-identityprovider-CLI"></a>

AWS CLI​ を使用して、SAML プロバイダーの作成、更新、および削除を実行できます。SAML フェデレーションの詳細については、「[Troubleshooting SAML federation](troubleshoot_saml.md)」を参照してください。

**IAM ID プロバイダーを作成してメタデータドキュメントをアップロードするには (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 ID プロバイダーを更新するには (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 ID プロバイダー (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 ID プロバイダー (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 ID プロバイダー (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 ID プロバイダーを削除するには (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 ID プロバイダーを削除するには、次のコマンドを実行します。
   + [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 ID プロバイダーを作成および管理する (AWS API)
<a name="idp-create-identityprovider-API"></a>

AWS​ API を使用して、SAML プロバイダーの作成、更新、および削除を実行できます。SAML フェデレーションの詳細については、「[Troubleshooting SAML federation](troubleshoot_saml.md)」を参照してください。

**IAM ID プロバイダーを作成してメタデータドキュメントをアップロードするには (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 ID プロバイダーを更新するには (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 ID プロバイダーにタグを付けるには (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 ID プロバイダーのタグを一覧表示するには (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 ID プロバイダーのタグを削除するには (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 ID プロバイダーを削除するには (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 ID プロバイダーを作成したら、IdP に対して証明書利用者の信頼を確立します。また、IdP の認証レスポンスからのクレームをポリシーで使用して、ロールへのアクセスを制御することもできます。
+ サービスプロバイダーとしての AWS について IdP に通知する必要があります。これは、IdP と AWS の間に証明書利用者の信頼を追加することと呼ばれます。証明書利用者の信頼を追加するための正確なプロセスは、使用する IdP によって異なります。詳細については、「[証明書利用者の信頼およびクレームの追加によって SAML 2.0 IdP を設定する](id_roles_providers_create_saml_relying-party.md)」を参照してください。
+ IdP が AWS へのクレームを含むレスポンスを送信すると、多くの受信クレームは AWS コンテキストキーにマッピングされます。これらのコンテキストキーを IAM ポリシーの Condition 要素に指定して、ロールへのアクセスを制御できます。詳細については、「[認証レスポンス用の SAML アサーションを設定する](id_roles_providers_create_saml_assertions.md)」を参照してください。