Amazon Connect での IAM を使用した SAML の設定 - Amazon Connect

Amazon Connect での IAM を使用した SAML の設定

Amazon Connect は、AWS を使用した Security Assertion Markup Language (SAML) 2.0 の設定による ID フェデレーションをサポートすることで、自組織から Amazon Connect インスタンスへのウェブベースのシングルサインオン (SSO) を可能にします。これにより、ユーザーは、SAML 2.0 互換 ID プロバイダー (IdP) によってホストされた組織内のポータルにサインインすると、Amazon Connect 用の別の認証情報を入力する必要なくシングルサインオンで Amazon Connect インスタンスにログインすることができます。

重要な注意事項

開始する前に、以下の点に注意してください。

  • Amazon Connect インスタンスの ID 管理方法として SAML 2.0 ベースの認証を選択するには、AWS Identity and Access Management フェデレーション の設定が必要です。

  • Amazon Connect のユーザー名は、ID プロバイダーによって返された SAML レスポンスで指定された RoleSessionName SAML 属性と一致する必要があります。

  • Amazon Connect ユーザーは、単一の AWS IAM ロールにのみ関連付けることができます。フェデレーションに使用される AWS IAM ロールを変更すると、以前のフェデレーティッドユーザーはログインに失敗します。Identity and Access Management ユーザーおよびロール管理の詳細については、「IAM ロール」を参照してください。

Amazon Connect での SAML の使用の概要

次の図に、ユーザーを認証して Amazon Connect と連携させる際の SAML リクエストのフローを示します。


                Amazon Connect を使用した SAML 認証リクエストのフローの概要

SAML リクエストは、次のようなステップを通過します。

  1. ユーザーは、Amazon Connect にログインするためのリンクが含まれている内部ポータルにアクセスします。リンクは、ID プロバイダーで定義されたものです。

  2. フェデレーションサービスが組織の ID ストアからの認証をリクエストします。

  3. ID ストアはユーザーを認証し、フェデレーションサービスに認証レスポンスを返します。

  4. 認証が成功すると、フェデレーションサービスはユーザーのブラウザに SAML アサーションを送信します。

  5. ユーザーのブラウザは SAML アサーションを AWS サインイン SAML エンドポイント (https://signin.aws.amazon.com/saml) にポストします。AWS サインインでは、SAML リクエストの受信、リクエストの処理、ユーザーの認証、Amazon Connect への認証トークンの転送を行います。

  6. Amazon Connect は、AWS からの認証トークンを使用してユーザーを認証し、ユーザーのブラウザで Amazon Connect を開きます。

Amazon Connect に対して SAML ベースの認証を有効にする

SAML 認証を使用するには、以下の手順で Amazon Connect インスタンスを有効化し、設定する必要があります。

  1. Amazon Connect インスタンスを作成し、ID 管理のための SAML 2.0 ベースの認証を選択します。

  2. ID プロバイダーと AWS の間での SAML フェデレーションを有効にします。

  3. Amazon Connect インスタンスに Amazon Connect ユーザーを追加します。インスタンスを作成したときに作成した管理者アカウントを使用して、インスタンスにログインします。[ユーザー管理] ページに移動し、ユーザーを追加します。

    重要

    Amazon Connect ユーザーと AWS IAM ロールの関連付けのために、ユーザー名は AWS IAM フェデレーションの統合で設定されている RoleSessionName と正確に一致する必要があります。通常は、ディレクトリ内のユーザー名になります。

    形式は、次の図に示すように、RoleSessionNameAmazon Connect ユーザー の形式のどちらにも一致する必要があります。

    形式:

    • 文字列: スペースなしの大文字と小文字の英数字

    • 長さの制限: 最小長は 2 です。最大長は 64 です。

    • 特殊文字: @- .

  4. SAML アサーション、認証レスポンス、リレーステートに向けて ID プロバイダーを設定します。ユーザーが ID プロバイダーにログインします。ログインできたら、Amazon Connect インスタンスにリダイレクトされます。IAM ロールを使用して、AWS と連携します。これで、Amazon Connect にアクセスできるようになります。

インスタンスの作成時に SAML 2.0 ベースの認証を選択する

Amazon Connect インスタンスを作成する際、ID 管理用に SAML 2.0 ベースの認証オプションを選択します。2 番目のステップでインスタンスの管理者を作成するとき、指定するユーザー名が既存のネットワークディレクトリ内のユーザー名と完全に一致しなければなりません。既存のディレクトリを通じてすでにパスワードが管理されているため、管理者ユーザーのパスワードを指定するオプションはありません。管理者は、Amazon Connect で作成され、管理者 セキュリティプロファイルが割り当てられます。

ユーザーを追加するには、管理者アカウントを使用して IdP から Amazon Connect インスタンスにログインします。

ID プロバイダーと AWS の間で SAML フェデレーションを有効にする

Amazon Connect に対して SAML ベースの認証を有効化するには、IAM コンソールで ID プロバイダーを作成する必要があります。詳細については、「SAML 2.0 フェデレーティッドユーザーが AWS Management Console にアクセス可能にする」を参照してください。

AWS の ID プロバイダーを作成するためのプロセスは、Amazon Connect と同じです。上記のフロー図のステップ 6 で、クライアントは、AWS Management Console ではなく Amazon Connect インスタンスに送信されます。

AWS との SAML フェデレーションを有効にするには、次のような手順が必要です。

  1. AWS で SAML プロバイダーを作成します。詳細については、「SAML ID プロバイダーの作成」を参照してください。

  2. AWS Management Console と SAML 2.0 フェデレーションを行うための IAM ロールを作成します。フェデレーション用に 1 つのロールのみを作成します (必要なロールは 1 つのみで、フェデレーションに使用されます)。IAM ロールによって、ID プロバイダーを通じてログインするユーザーが AWS でどのアクセス許可を得るかが決まります。この例では、Amazon Connect にアクセスするためのアクセス許可が与えられます。Amazon Connect の機能へのアクセス許可を制御するには、Amazon Connect 内のセキュリティプロファイルを使用します。詳細については、「SAML 2.0 フェデレーション用のロールの作成 (コンソール)」を参照してください。

    重要

    このロールを置き換えると、以前のロールと Amazon Connectuser との関係がイミュータブルなため、既存のユーザーログインが中断され、以前のフェデレーティッドユーザーはログインに失敗します。

    ステップ 5 では、[プログラムによるアクセスと AWS マネジメントコンソールによるアクセスを許可する] を選択します。手順のトピック (SAML 2.0 フェデレーション用のロールを作成する準備をするには) に示されている信頼ポリシーを作成します。次のアクセス許可を Amazon Connect インスタンスに割り当てるポリシーを作成します。アクセス許可は、「SAML ベースのフェデレーション用のロールを作成するには」の手順のステップ 9 で始まります。

    SAML フェデレーションに向けて IAM ロールにアクセス権限を割り当てるポリシーを作成するには

    1. On the [アクセス権限ポリシーをアタッチする] ページで [ポリシーの作成] を選択します。

    2. [Create policy] (ポリシーの作成) ページで [JSON] を選択します。

    3. 以下のサンプルポリシーのいずれかをコピーして JSON ポリシーエディタに貼り付け、既存のテキストを置き換えます。いずれかのポリシーを使用して SAML フェデレーションを有効化することも、特定の要件に合わせてポリシーをカスタマイズすることもできます。

      このポリシーを使用すると、特定の Amazon Connect インスタンス内のすべてのユーザーに対してフェデレーションが有効化されます。SAML ベースの認証の場合、作成したインスタンスの Resource の値を ARN に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "connect:GetFederationToken", "Resource": [ "arn:aws:connect:us-east-1:361814831152:instance/2fb42df9-78a2-2e74-d572-c8af67ed289b/user/${aws:userid}" ] } ] }

      このポリシーを使用すると、特定の Amazon Connect インスタンスへのフェデレーションが有効化されます。connect:InstanceId の値をインスタンスのインスタンス ID に置き換えます。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement2", "Effect": "Allow", "Action": "connect:GetFederationToken", "Resource": "*", "Condition": { "StringEquals": { "connect:InstanceId": "2fb42df9-78a2-2e74-d572-c8af67ed289b" } } } ] }

      このポリシーを使用すると、複数のインスタンスに対してフェデレーションを有効化することができます。リストされたインスタンス ID が括弧で囲まれていることに注意してください。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "Statement2", "Effect": "Allow", "Action": "connect:GetFederationToken", "Resource": "*", "Condition": { "StringEquals": { "connect:InstanceId": [ "2fb42df9-78a2-2e74-d572-c8af67ed289b", "1234567-78a2-2e74-d572-c8af67ed289b"] } } } ] }
    4. ポリシーを作成したら、[Next: Review] を選択します。その後、「SAML 2.0 フェデレーション用のロールの作成 (コンソール)」トピックの「SAML ベースのフェデレーション用のロールを作成するには」プロシージャの手順 10 に戻ります。

  3. ネットワークを AWS 用の SAML プロバイダーとして設定します。詳細については、「SAML 2.0 フェデレーティッドユーザーが AWS Management Console にアクセス可能にする」を参照してください。

  4. 認証レスポンス用の SAML アサーションを設定します。詳細については、「認証レスポンスの SAML アサーションを設定する」を参照してください。

  5. Amazon Connect の場合は、[アプリケーション開始 URL] を空白のままにします。

  6. ID プロバイダーのリレーステートを、Amazon Connect インスタンスをポイントするように設定します。リレーステートに使用する URL は、次のとおりです。

    https://region-id.console.aws.amazon.com/connect/federate/instance-id

    region-id を、Amazon Connect インスタンスを作成したリージョン名 (例えば、米国東部 (バージニア北部) を指す us-east-1) で置き換えます。instance-id をインスタンスのインスタンス ID で置き換えます。

    GovCloud インスタンスの場合、URL はhttps://console.amazonaws-us-gov.com/:

    • https://console.amazonaws-us-gov.com/connect/federate/instance-id

    注記

    インスタンスのインスタンス ID を検索するには、Amazon Connect コンソールでインスタンスエイリアスを選択します。インスタンス ID は、[概要] ページに表示されるインスタンス ARN の中の「/instance」の後にある数字と文字のセットです。例えば、以下のインスタンス ARN では、178c75e4-b3de-4839-a6aa-e321ab3f3770 の部分がインスタンス ID です。

    arn:aws:connect:us-east-1:450725743157:instance/178c75e4-b3de-4839-a6aa-e321ab3f3770

地理的に分離された SAML サインインの構成

リージョン SAML エンドポイントを使用するには、以下のステップを実行します。これらのステップは IdP に依存しません。すべての SAML IdP (例えば、Okta、Ping、OneLogin、Shibboleth、ADFS、AzureAD など) で機能します。

  1. AssertionConsumerService を更新 (またはオーバーライド) します。これを行うには 2 つの方法があります。

    • オプション 1: AWS SAML メタデータをダウンロードして、Location を任意のリージョンに更新します。この新しいバージョンの AWS SAML メタデータを IdP にロードします。

      以下に、リビジョンの例を示します。

      <AssertionConsumerService index="1" isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://region-id.signin.aws.amazon.com/saml"/>

    • オプション 2: IdP の AssertionConsumerService (ACS) URL をオーバーライドします。プリベイク AWS 統合を提供する Okta などの IdP の場合、AWS 管理コンソールで ACS URL をオーバーライドできます。同じ形式を使用して、任意のリージョンにオーバーライドします (例えば、https://region-id.signin.aws.amazon.com/saml)。

  2. 関連付けられたロールの信頼ポリシーを更新します。

    1. このステップは、特定の ID プロバイダーを信頼するすべてのアカウントのすべてのロールに対して実行する必要があります。

    2. 信頼関係を編集し、単一の SAML:aud 条件を多値条件に置き換えます。例:

      • デフォルト: "SAML:aud": "https://signin.aws.amazon.com/saml"。

      • 変更後: "SAML:aud": [ "https://signin.aws.amazon.com/saml", "https://region-id.signin.aws.amazon.com/saml" ]

    3. 信頼関係に対するこれらの変更は、事前に行ってください。インシデント中に計画の一部として実行すべきではありません。

  3. リージョン固有のコンソールページのリレー状態を設定します。

    1. この最後のステップを行わなかった場合、リージョン固有の SAML サインインプロセスによって同じリージョン内のコンソールサインインページにユーザーが転送されるという保証はありません。このステップは ID プロバイダーごとの違いが多いですが、ディープリンクを達成するためのリレー状態の使用を示しているブログがあります (例えば、「How to Use SAML to Automatically Direct Federated Users to a Specific AWS Management Console Page」(SAML を使用してフェデレーティッドユーザーを特定の AWS 管理コンソールページに自動的に転送する方法))。

    2. お使いの IdP に適したテクニック/パラメータを使用して、リレー状態を一致するコンソールエンドポイントに設定します (例えば、https://region-id.console.aws.amazon.com/connect/federate/instance-id)。

注記
  • 追加のリージョンで STS が無効になっていないことを確認します。

  • 追加のリージョンで STS アクションを妨げる SCP がないことを確認します。

リレーステートの URL で送信先を使用する

ID プロバイダーのリレーステートを設定する際、URL で destination 引数を使用すると、ユーザーを Amazon Connect インスタンスの特定のページに移動させることができます。例えば、エージェントのログイン時に直接 CCP を開くリンクを使用します。ユーザーには、インスタンス内の該当ページへのアクセス権限を付与するセキュリティプロファイルが割り当てられていなければなりません。例えば、エージェントを CCP に送信するには、次のような URL をリレーステートに使用します。URL 内の送信先の値には URL エンコードを使用する必要があります。

  • https://us-east-1.console.aws.amazon.com/connect/federate/instance-id?destination=%2Fconnect%2Fccp-v2

GovCloud インスタンスの場合、URL はhttps://console.amazonaws-us-gov.com/: したがって、アドレスは次のようになります。

  • https://console.amazonaws-us-gov.com/connect/federate/instance-id?destination=%2Fconnect%2Fccp-v2

Amazon Connect インスタンスにユーザーを追加します。

インスタンスにユーザーを追加するときは、ユーザー名が既存のディレクトリ内のユーザー名と完全に一致することを確認してください。名前が一致しない場合、そのユーザー名を持つユーザーアカウントが Amazon Connect に存在しないことになるため、ユーザーは、ID プロバイダーにログインすることはできても Amazon Connect にはログインできません。ユーザーは、[ユーザー管理] ページで手動で追加するか、CSV テンプレートを使って一括アップロードします。ユーザーを Amazon Connect に追加したら、セキュリティプロファイルや、他のユーザー設定を割り当てることができます。

ユーザーが ID プロバイダーにログインしたが、同じユーザー名を持つアカウントが Amazon Connect に存在しない場合は、次のように「Access denied」というメッセージが表示されます。


                ID プロバイダーを通じて Amazon Connect にログインしようとしたユーザーのユーザー名が Amazon Connect に存在しない場合に表示されるエラーメッセージ。

テンプレートを使ってユーザーを一括アップロードする

ユーザーをインポートするには、CSV ファイルに追加します。その後、CSV ファイルをインスタンスにインポートすると、そのファイルにすべてのユーザーが追加されます。CSV ファイルをアップロードしてユーザーを追加する場合は、SAML ユーザーのテンプレートを必ず使用してください。Amazon Connect の [ユーザー管理] ページにあります。SAML ベースの認証用には、別のテンプレートを使用します。テンプレートを以前ダウンロードしたことがある場合も、SAML ベースの認証を使ってインスタンスを設定した後、[ユーザー管理] ページで提供されているバージョンをダウンロードしてください。テンプレートに、E メールやパスワードの列を含めることはできません。

SAML ユーザーログインとセッションの長さ

Amazon Connect で SAML を使用する場合、ユーザーは、ID プロバイダー (IdP) から Amazon Connect にログインする必要があります。IdP は AWS と統合するように構成されています。認証後、セッションのトークンが作成されます。ユーザーは Amazon Connect インスタンスにリダイレクトされ、シングルサインオンを使用して Amazon Connect に自動ログインします。

ベストプラクティスとして、Amazon Connect の使用を終了した Amazon Connect ユーザーがログアウトするプロセスを定義することも大切です。ユーザーは、Amazon Connect と ID プロバイダーの両方からログアウトする必要があります。そうしないと、そのセッションのトークンがセッションの長さにわたって有効であるため、同じコンピュータに次にログインした人物がパスワードなしで Amazon Connect にログインできることになります。10 時間有効です。

セッションの有効期限について

Amazon Connect セッションの有効期限は、ユーザーのログインから 10 時間後です。10 時間後、ユーザーは、通話中であっても自動的にログアウトされます。エージェントが 10 時間以上ログインしたままになっている場合は、期限が切れる前にセッショントークンを更新する必要があります。新しいセッションを作成するには、エージェントは Amazon Connect および IdP からログアウトし、再度ログインします。そうすれば、トークンで設定されているセッションタイマーがリセットされるため、エージェントが顧客との通話中にログアウトされてしまう事態を防ぐことができます。ログインしているユーザーのセッションの有効期限が切れると、次のようなメッセージが表示されます。ユーザーが Amazon Connect を再度使用するためには、ID プロバイダーにログインする必要があります。


                SAML ベースのユーザーに対して表示される、セッションの有効期限が切れたときのエラーメッセージ。