

# ID プロバイダーと AWS とのフェデレーション
<a name="id_roles_providers"></a>

ベストプラクティスとして、AWS アカウント内に個別に IAM ユーザーを作成するのではなく、ID プロバイダーとのフェデレーションを使用して AWS リソースにアクセスするように人間のユーザーに求めることをお勧めします。ID プロバイダー (IdP) を使用すると、AWS の外部のユーザー ID を管理して、これらの外部ユーザー ID にアカウント内の AWS リソースに対するアクセス許可を与えることができます。これは、会社に既に企業ユーザーディレクトリなどの独自の ID システムがある場合に便利です。また、AWS リソースへのアクセスが必要なモバイルアプリやウェブアプリケーションを作成する場合にも便利です。

**注記**  
また、IAM で SAML フェデレーションを使用するのではなく、外部 SAML ID プロバイダーを使用して [IAM アイデンティティセンター](https://docs.aws.amazon.com//singlesignon/latest/userguide/what-is.html)で人間ユーザーを管理することもできます。IAM アイデンティティセンターを ID プロバイダーとフェデレーションすると、組織内の複数の AWS アカウントと複数の AWS アプリケーションへのアクセスをユーザーに付与できるようになります。IAM ユーザーが必要な特定の状況についての情報は、「[IAMユーザー (ロールの代わりに) を作成する場合](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html#id_which-to-choose)」を参照してください。

IAM アイデンティティセンターを有効にすることなく AWS アカウントを 1 つだけ使用する場合は、[OpenID Connect (OIDC)](http://openid.net/connect/) または [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security) を使用して ID 情報を AWS に提供する外部 IdP で IAM を使用できます。OIDC は、GitHub Actions など、AWS 上で実行しないアプリケーションを AWS リソースに接続します。よく知られている SAML ID プロバイダーの例には、Shibboleth や Active Directory Federation Services があります。

ID プロバイダーを使用すると、カスタムサインインコードを作成したり独自のユーザー ID を管理したりする必要がありません。IdP では、これらを行うための環境が用意されています。外部ユーザーは IdP を使用してサインインします。これらの外部 ID に、アカウントの AWS リソースを使用するアクセス許可を与えることができます。ID プロバイダーは、アクセスキーなどの長期的セキュリティ認証情報をアプリケーションに配布したり組み込んだりする必要がないので、AWS アカウントの安全性の維持に役立ちます。

以下の表に、IAM フェデレーションタイプを示します。IAM、IAM アイデンティティセンター、Amazon Cognito のうち、どのタイプが自分のユースケースに最善であるか確認してください。以下の概要と表は、ユーザーが AWS リソースへのフェデレーションアクセスを取得するために使用できる方法の概略を示しています。


| IAM フェデレーションタイプ | アカウントの種類 | アクセス管理の対象 | サポートされている ID ソース | 
| --- | --- | --- | --- | 
|  IAM Identity Center とのフェデレーション  |  AWS Organizations によって管理される複数のアカウント  |  ワークフォースの人間ユーザー  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_providers.html)  | 
|  IAM とのフェデレーション  |  単一のスタンドアロンアカウント  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_providers.html)  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_providers.html)  | 
|  Amazon Cognito アイデンティティプールとのフェデレーション  |  いずれか  |  リソースへのアクセスに IAM 認可を必要とするアプリのユーザー  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_providers.html)  | 

## IAM Identity Center とのフェデレーション
<a name="id_roles_providers_identity-center"></a>

人間ユーザーの一元的なアクセス管理を行うには、[IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) を使用して、ご自分のアカウントへのアクセスと、それらのアカウント内でのアクセス許可を管理することをお勧めします。IAM Identity Center のユーザーには、AWS リソースへの短期的な認証情報が付与されます。Active Directory、外部 ID プロバイダー (IdP)、または IAM Identity Center のディレクトリを、AWS リソースへのアクセスを割り当てるユーザーおよびグループの ID ソースとして使用できます。

IAM Identity Center は、SAML (Security Assertion Markup Language) 2.0 との ID フェデレーションをサポートしています。これにより、AWS アクセスポータル内のアプリケーションの使用が許可されているユーザーに、フェデレーションシングルサインオンアクセスを提供します。それにより、ユーザーは、AWS マネジメントコンソールやサードパーティー製アプリケーション (Microsoft 365、SAP Concur、Salesforce など) を含め、SAML をサポートするサービスへのシングルサインオンが可能になります。

## IAM とのフェデレーション
<a name="id_roles_providers_iam"></a>

IAM ID センターで人間ユーザーを管理することを強くお勧めしますが、短期間の小規模デプロイで人間ユーザーに IAM によるフェデレーティッドプリンシパルのアクセスを有効にできます。IAM では、個別の SAML 2.0 および Open ID Connect (OIDC) IdP を使用し、アクセスコントロールにフェデレーティッドプリンシパル属性を使用することができます。IAM を使用すると、コストセンター、役職、ロケールなどのユーザー属性を IdP から AWS に渡し、これらの属性に基づいてきめ細かいアクセス権限を実装できます。

ワークロードとは、アプリケーションやバックエンドプロセスなど、ビジネス価値を提供するリソースやコードの集合体のことです。ワークロードでは、AWS サービス、アプリケーション、運用ツール、およびコンポーネントにリクエストを送信するために IAM ID が必要になる場合があります。これらの ID には、Amazon EC2 インスタンスや AWS Lambda 関数などの AWS 環境で実行中のマシンが含まれます。

また、アクセスを必要とする外部の関係者のマシン ID を管理することもできます。マシン ID へのアクセスを許可するには、IAM ロールを使用できます。IAM ロールは特定のアクセス許可を持ち、ロールセッションで一時的なセキュリティ認証情報に依存することで AWS にアクセスする方法を提供します。さらに、AWS 環境にアクセスする必要がある AWS の外部のマシンが含まれる場合もあります。AWS の外部で実行されるマシンには、[IAM Roles Anywhere](https://docs.aws.amazon.com/rolesanywhere/latest/userguide/introduction.html) を使用できます。ロールの詳細については、「[IAM ロール](id_roles.md)」をご参照ください。ロールを使用して AWS アカウント へのアクセス許可を委任する方法については「[IAM チュートリアル: AWS アカウント間の IAM ロールを使用したアクセスの委任](tutorial_cross-account-with-roles.md)」を参照してください。

IdP を直接 IAM にリンクするには、ID プロバイダーエンティティを作成して、AWS アカウントと IdP の間に信頼関係を確立します。IAMは、[OpenID Connect (OIDC) ](http://openid.net/connect/)または [SAML 2.0 (Security Assertion Markup Language 2.0)](https://wiki.oasis-open.org/security) と互換性のある IdP をサポートします。これら IdP の AWS での使用についての詳細は、以下のセクションを参照してください。
+ [OIDC フェデレーション](id_roles_providers_oidc.md)
+ [SAML 2.0 フェデレーション](id_roles_providers_saml.md)

## Amazon Cognito アイデンティティプールとのフェデレーション
<a name="id_roles_providers_cognito"></a>

Amazon Cognito は、モバイルアプリやウェブアプリでユーザーを認証および認可したい開発者向けに設計されています。Amazon Cognito ユーザープールは、アプリにサインインおよびサインアップ機能を追加します。アイデンティティプールは、AWS で管理する保護されたリソースへのアクセス権をユーザーに付与する IAM 認証情報を提供します。アイデンティティプールは、[https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html) API オペレーションを通じて一時セッションの認証情報を取得します。

Amazon Cognito は、SAML と OpenID Connect をサポートする外部 ID プロバイダー、Facebook、Google、Amazon などのソーシャル ID プロバイダーと連携しています。アプリは、ユーザープールまたは外部 IdP を使用してユーザーをサインインさせ、IAM ロールのカスタマイズされた一時セッションを使用して、ユーザーに代わってリソースを取得できます。

## その他のリソース
<a name="id_roles_providers_additional_resources"></a>
+ 組織の認証システムを使用して AWS マネジメントコンソール へのシングルサインオン (SSO) を有効にするカスタムフェデレーションプロキシを作成する方法のデモンストレーションについては、「[AWS コンソールへのカスタム ID ブローカーアクセスを有効にする](id_roles_providers_enable-console-custom-url.md)」を参照してください。