SAML 2.0 フェデレーティッドユーザーが AWS Management Consoleにアクセス可能にする - AWS Identity and Access Management

SAML 2.0 フェデレーティッドユーザーが AWS Management Consoleにアクセス可能にする

フェデレーティッドユーザーが AWS Management Console にアクセスできるように、SAML 2.0 互換 ID プロバイダー (IdP) および AWS を設定するロールを使用します。このロールは、コンソールでタスクを実行するユーザーアクセス権限を付与します。AWS にアクセスするためのその他の方法を SAML フェデレーティッドユーザーに付与する場合は、以下のトピックの 1 つを参照してください。

概要

次の図は、SAML 対応のシングルサインオンについて処理の流れを示しています。

注記

この SAML の使用方法の場合、ワークフローでユーザーに代わって AWS Management Consoleを開くため、SAML 2.0 フェデレーション に示されている一般的な使用方法とは異なります。これには、AssumeRoleWithSAML API を直接呼び出す代わりに、AWS サインインエンドポイントを使用する必要があります。エンドポイントはユーザーの代わりに API を呼び出し、URL を返すと、それによってユーザーのブラウザが AWS Management Consoleへ自動的にリダイレクトされます。

SAML を使用した AWS マネジメントコンソールへのシングルサインオン (SSO)

この図表は以下のステップを示しています。

  1. ユーザーは組織のポータルにアクセスして、AWS Management Console に移動するオプションを選択します。一般的に、組織のポータルは、組織と AWS 間の信頼の交換を処理する IdP の機能です。たとえば、Active Directory フェデレーションサービスでは、ポータル URL は次のようになります。https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx

  2. ポータルが組織内のユーザーの ID を確認します。

  3. ポータルは、ユーザーを識別するアサーションを含む SAML アサーションレスポンスを生成し、ユーザーの属性を含めます。コンソールセッションが有効な期間を指定する SessionDuration という SAML アサーションの属性を含むよう IdP を設定できます。セッションタグとして属性を渡すように IdP を設定することもできます。ポータルはこのレスポンスをクライアントブラウザに送信します。

  4. クライアントブラウザは AWS のシングルサインオンエンドポイントにリダイレクトされ、SAML アサーションを投稿します。

  5. エンドポイントは、ユーザーの代わりに一時的なセキュリティ認証情報をリクエストし、コンソールのサインイン URL を作成します。

  6. AWS は、サインイン URL をクライアントにリダイレクトとして送信します。

  7. クライアントのブラウザは AWS Management Consoleにリダイレクトされます。複数の IAM ロールに対応付けられた属性を SAML 認証レスポンスが含む場合は、最初にコンソールへのアクセスするためのロールを選択する画面が表示されます。

ユーザーの立場では、この処理を意識することはありません。ユーザーは組織の内部ポータルから AWS Management Console に移動するだけで、AWS 認証情報を指定する必要はありません。

以下のセクションでは、この動作を設定する方法の概要と、詳細なステップへのリンクをご紹介します。

ネットワークを AWS の SAML プロバイダーとして設定する

組織のネットワーク内で、組織の ID ストア (Windows Active Directory など) が、Windows Active Directory Federation Services や Shibboleth などの SAML ベースの IdP と連携するように設定します。IdP を使用して、組織を IdP として記述し、認証キーを含むドキュメントメタデータを生成します。また、AWS Management Console ルートユーザーに対するユーザーリクエストを AWS SAML エンドポイントにルーティングして、SAML アサーションを使って認証するように、組織のポータルを設定します。metadata.xml ファイルを生成するための IdP の設定方法は、IdP によって異なります。手順については IdP の文書を参照してください。また、サードパーティーの SAML ソリューションプロバイダーを AWS に統合する には、サポートされる数多くの SAML プロバイダーのウェブドキュメントへのリンクが掲載されています。

IAMで SAML プロバイダーを作成するには

次に、AWS Management Console にサインインし、IAM コンソールへ移動します。ここで、新しい SAML プロバイダーを作成します。これは、組織の IdP に関する情報を保持する IAM のエンティティです。このプロセスの一環として、前のセクションで組織の IdP ソフトウェアによって生成されたメタデータドキュメントをアップロードします。詳細については、「IAM で SAML ID プロバイダーを作成する」を参照してください。

フェデレーションユーザーのアクセス許可を AWS で設定する

次のステップでは、IAM と組織の IdP の間の信頼関係を確立する IAM ロールを作成します。このロールは、フェデレーションの目的で IdP をプリンシパル(信頼されたエンティティ)として識別します。ロールは、組織の IdP によって認証されたユーザーが AWS で何を実行できるかも定義します。このロールは、IAM コンソールを使用して作成できます。ロールを引き受けることができるユーザーを示す信頼ポリシーを作成するときは、前述の IAM で作成した SAML プロバイダーを指定します。また、ユーザーがロールを引き受けるために一致する必要がある 1 つ以上の SAML 属性も指定します。たとえば、SAML の eduPersonOrgDN 値が ExampleOrg であるユーザーのみにサインインを許可するように指定できます。ロールウィザードは、そのロールが AWS Management Consoleへのサインインだけで引き受けられるように、saml:aud 属性をテストする条件を自動的に追加します。ロールの信頼ポリシーは次のようなものです。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Federated": "arn:aws:iam::account-id:saml-provider/ExampleOrgSSOProvider"}, "Action": "sts:AssumeRoleWithSAML", "Condition": {"StringEquals": { "saml:edupersonorgdn": "ExampleOrg", "saml:aud": "https://signin.aws.amazon.com/saml" }} }] }
注記

ロール信頼ポリシーで使用される SAML IDP は、そのロールと同じアカウントにある必要があります。

https://region-code.signin.aws.amazon.com/static/saml-metadata.xmlsaml:aud 属性のリージョナルエンドポイントを含めることができます。実行可能な region-code 値のリストについては、「AWS サインインエンドポイント」の [Region] (リージョン) 列を参照します。

ロールのアクセス許可ポリシーでは、任意のロール、ユーザー、グループに付与するアクセス許可を指定します。たとえば、組織のユーザーが Amazon EC2 インスタンスを管理することを許可する場合、アクセス許可ポリシーで明示的に Amazon EC2 アクションを許可します。これは、Amazon EC2 Full Access 管理ポリシーなどの管理ポリシーを割り当てることでも行えます。

SAML IdP のロールの作成に関する詳細については、「SAML 2.0 フェデレーション用のロールを作成する (コンソール)」を参照してください。

設定の完了と SAML アサーションの作成

https://region-code.signin.aws.amazon.com/static/saml-metadata.xml または https://signin.aws.amazon.com/static/saml-metadata.xml にある saml-metadata.xml ファイルをインストールし、AWS がお客様のサービスプロバイダーであることを SAML IdP に通知します。実行可能な region-code 値のリストについては、「AWS サインインエンドポイント」の [Region] (リージョン) 列を参照します。

ファイルのインストール方法は IdP によって異なります。プロバイダーによっては、URL の入力を選択できる場合があります。この場合、IdP がお客様の代わりにファイルを取得してインストールします。また、URL からファイルをダウンロードし、ローカルファイルとして指定する必要があるプロバイダーもあります。詳細については IdP の文書を参照してください。また、サードパーティーの SAML ソリューションプロバイダーを AWS に統合する には、サポートされる数多くの SAML プロバイダーのウェブドキュメントへのリンクが掲載されています。

また、認証レスポンスの一部として、IdP から AWS へ SAML 属性として渡す情報も設定します。この情報のほとんどは、ポリシーで評価できる条件コンテキストキーとして AWS に表示されます。これらの条件キーにより、適切なコンテキストで許可されたユーザーのみに、AWS リソースにアクセスするアクセス許可が付与されます。コンソールを使用するタイミングを制限する時間ウィンドウを指定できます。ユーザーが認証情報を更新する前にコンソールにアクセスできる最大時間(最大 12 時間)を指定できます。詳細については、「認証レスポンス用の SAML アサーションを設定する」を参照してください。