Amazon Web Services ブログ

Okta を使用した Amazon Connect のシングルサインオン設定

IT リソースへのアクセスを保護することは非常に重要です。従業員が使用するウェブベースのアプリケーションの数が増えるにつれて、ログイン認証情報を記憶しておくことは困難になります。多くの企業では、リソースへのアクセスを合理化し、従業員のルーチンを簡素化するために、さまざまな ID プロバイダーによるシングルサインオンを採用しています。Amazon Connectは、SAML 2.0準拠のIDプロバイダーを使用したコンタクトセンターへの認証を提供可能です。このBlogでは、OktaをAmazon ConnectのIDプロバイダーとして使用するために必要な手順についてご説明します。

Oktaは、SAML 2.0認証を使用したSingle Single-Onサービスとして、最も一般的に使用されているプロバイダーの1つです。Oktaのセットアップ方法は他のSAML プロバイダーの設定とほとんど同じですが、本投稿ではOktaを使用するためのステップを具体的にご説明します。これは、一般的なガイダンスであるAmazon ConnectでのID管理用にSAMLを設定するを簡略化したものになっています。

本投稿で行う設定では、以下を使用します。

このステップを完了するには、以下が必要です。

  1. アクティブなAWSアカウント。
  2. 新しいIAM ロール、ポリシー、およびユーザーを作成できるIAM権限。
  3. 新しいAmazon Connectインスタンスを作成できるIAM権限。
  4. Oktaアカウント。
    本投稿では、Okta 開発者アカウントを使用したステップを示します。これは機能的には標準のアカウントと変わりません。

Amazon Connect インスタンスを作成する

Amazon Connect ではインスタンスの作成時に、使用するID管理システムを選択します。一度選択すると、後で変更することはできません。そのため、Oktaと統合するために、新しいAmazon Connectインスタンスを作成する必要があります。このブログでは、Amazon Connect設定の詳細については説明いたしません。Amazon Connectインスタンスの設定方法の詳細については、Amazon Connect 管理者ガイドAmazon Connect の使用開始セクションを参照してください。

SAML 2.0 ベースの認証を使用するAmazon Connectインスタンスを新規作成するには:

  1. AWS マネジメントコンソールでAmazon Connectコンソールを開きます。
  2. 使用するリージョンを確認します。
  3. 以下のいずれかを実行します。
    • 選択したリージョンで Amazon Connect インスタンスをまだ作成していない場合は、”今すぐ始める”を選択します。
    • 選択したリージョンで Amazon Connect インスタンスを以前に作成している場合は、”インスタンスを追加する”を選択します。

  4.  “ステップ 1: ID管理” で、”SAML 2.0ベースの認証” を選択します。
  5.  “アクセスURL” に、インスタンスのインスタンスエイリアスを入力し、”次のステップ” を選択します。
    注意:入力した名前は、AWSマネジメントコンソールにインスタンスエイリアスとして表示され、Okta を設定するときのアクセスURLのドメイン名として使用されます。エイリアスはグローバルに一意である必要があり、インスタンスの作成後に変更することはできません。
  6.  “ステップ 2:管理者” で、インスタンスの管理者として使用するアカウントの 名、姓、ユーザー名を入力し、”次のステップ” を選択します。これは、Oktaに既に存在するユーザー名である必要があります。
    • 注意:入力するユーザー名は、大文字小文字を含めてOktaのユーザー名と正確に一致することが重要です。

  7. “ステップ 3:テレフォニーオプション”はデフォルトのままで、 次のステップを選択します(後で変更できます)。
  8. “ステップ 4: データストレージ” はデフォルトのままで、 次のステップを選択します(後で変更できます)。
  9. “ステップ 5:レビューと作成”で、設定を確認し、”インスタンスの作成”を選択します。
  10. インスタンスが作成された後は、コンタクトセンターのセットアップを行う事ができます(Amazon Connectのドキュメントを参照してください)。

Amazon Connectインスタンスが作成されましたので、OktaがリソースにアクセスするためのAWS Identity and Access Management(IAM) ポリシーを作成します。

IAMポリシーを作成する

SAML統合のために、特定のリソースへのアクセスを許可する適切なポリシー作成が必要です。ここでは必須となる2つのポリシーを作成します。1つ目のポリシーでは、このAmazon Connectインスタンスのすべてのユーザーに対してフェデレーションを許可します。2つ目のポリシーでは、OktaがIAM ロールとアカウントエイリアスを一覧表示することを許可します。

Amazon Connectのフェデレーションポリシーを作成するには :

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで、 “ポリシー”を選択します。
  3. “ポリシーの作成”を選択します。
  4. JSONタブを選択します。
  5. 次のポリシーをエディタに貼り付けて、既存のコンテンツを置き換えます。
    {
       "Version": "2012-10-17",
       "Statement": [
            {
                "Sid": "Statement1",
                "Effect": "Allow",
                "Action": "connect:GetFederationToken",
                "Resource": [
                    "**YOUR ARN**/user/${aws:userid}"
                ]
            }
        ]
    }
  6. **YOUR ARN**の部分をAmazon ConnectインスタンスのARNに変更します。ARNを参照するには :
    a. 新しいタブを開き、Amazon Connectコンソールに移動します。
    b. インスタンスエイリアスを選択します。
    c. インスタンス ARN の値をコピーします。
  7. **YOUR ARN**の変更を確認し、 “ポリシーの確認”を選択します。
  8. ポリシーに okta_federation_policy など名前を付けます。
  9. オプションで、ポリシーの説明を入力します。
  10. “ポリシーの作成”を選択します。

 

Oktaのアクセスポリシーを作成するには :

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで、 “ポリシー”を選択します。
  3. “ポリシーの作成”を選択します。
  4. JSONタブを選択します。
  5. 次のポリシーをエディタに貼り付けて、既存のコンテンツを置き換えます。
    {
       "Version": "2012-10-17",
       "Statement": [
            {
              "Effect": "Allow",
              "Action": [
                  "iam:ListRoles",
                  "iam:ListAccountAliases"
              ],
              "Resource": "*"
            }
        ]
    }
  6. 置き換えを確認し、”ポリシーの確認”を選択します。
  7. ポリシーに okta_cli_policy など名前を付けます。
  8. オプションで、ポリシーの説明を入力します。
  9. ポリシーの作成を選択します。

 

ポリシーが作成できたら、AWSリソースへプログラムからアクセスするIAM ユーザーを作成します。これにより、OktaはAWSアカウントから適切なリソースを取得できるようになります。

ユーザーを作成するには :

  1. IAM コンソールを開きます。
  2. ナビゲーションペインで、 “ユーザー”を選択します。
  3. “ユーザーを追加”を選択します。
  4. “ユーザー詳細の設定”セクションで、ユーザー名(okta_cli_user など)を入力します。
  5. “AWSアクセスの種類を選択”セクションで、”プログラムによるアクセス”を選択します。
  6. “次のステップ:アクセス権限”を選択します。
  7. “アクセス許可の設定”セクションで、 “既存のポリシーを直接アタッチ”を選択します。
  8. 検索フィールドに”okta”と入力します。使用可能なポリシーが以下のようにフィルタリングされ表示されます。
  9. 前に作成したポリシーを選択します。
  10. “次のステップ:タグ”を選択します。
  11. 必要に応じて、タグを追加し、”次のステップ:確認”を選択します。
  12. “ユーザーの作成”を選択します。
  13. 成功ページで、ユーザー認証情報を含む credentials.csv ファイルをダウンロードします。

 

ユーザーが作成されたので、Amazon Web ServicesアプリケーションをOktaに追加し、IAM IDプロバイダーをあわせて構築します。これは、それぞれがお互いの情報に依存するため必須になります。OktaのAmazon Web Services アプリから始めます。

Amazon Web ServicesアプリケーションをOktaに追加し、IDプロバイダーを作成するには :

  1. Okta 管理者アカウントにログインします。
  2. 開発者ダッシュボードを使用している場合は、左上隅のドロップダウンから “Classic UI”を選択してClassic UI に切り替えます。
  3. “Applications”を選択します。
  4. “Add Application”を選択します。
  5. 検索バーに、”AWS Account Federation”と入力します。
  6. “AWS Account Federation”アプリケーションの横にある”Add”を選択します。
  7. “Application label”に、”Amazon Connect Administrator”と入力します。
  8. “Your AWS Login URL”に、”https://console.thinkwithwp.com/”と入力します。
  9. 他のすべてのボックスはデフォルトのままにして、”Next”を選択します。
  10. “Sign-On Options”ページの”Sign On Methods”セクションで、”SAML 2.0″を選択します。
  11. “SAML 2.0″セクションの”Default Relay State” に、次のように URL を入力します。
    https://[region-id].console.thinkwithwp.com/connect/federate/[instance-id]
    [region-id]を、Amazon Connect インスタンスを作成したリージョン名に置き換えます(東京リージョンの場合はap-northeast-1 など)。
    [instance-id]をインスタンスのインスタンス ID に置き換えます。
    インスタンス ID を確認するには :

    1. a. 新しいタブを開き、Amazon Connectコンソールに移動します。
    2. b. インスタンスエイリアスを選択します。
    3. c. インスタンス ID は、インスタンス ARN の最後の “/” の後の文字列全てです。
    4. 例: arn:aws:connect:us-west-2:123456789:instance/00aa11b2-c333-4d55-e6f7-888g9999hh0

  12. “Identity Provider metadata”を右クリックし、リンク先のファイルを”metadata.xml”としてコンピュータに保存します。
  13. このタブを閉じないでください。すぐ後でセットアップを続行する必要があります。
  14. 新しいタブを開き、 IAM コンソールに移動します。
  15. ナビゲーションペインで、”ID プロバイダー”を選択します。
  16. “プロバイダの作成”を選択します。
  17. “プロバイダーのタイプ”として、”SAML”を選択します。
  18. “プロバイダ名”に、Okta_Connect_Adminと入力します。
  19. “メタデータドキュメント”セクションで、ステップ12 で保存した “metadata.xml”ドキュメントを選択します。
  20. “次のステップ”を選択します。
  21. プロバイダー情報を検証し、”作成”を選択します。
  22. 作成が完了したら、”Okta_Connect_Admin”を選択して詳細を表示します。
  23. “プロバイダARN”をコピーし、今後使用できるようにテキストファイルに貼り付けておきます。
  24. IAM コンソールのナビゲーションペインで、”ロール”を選択します。
  25. “ロールの作成”を選択します。
  26. “SAML 2.0 フェデレーション”を選択します。
  27. “SAMLプロバイダー”セクションで、”Okta_Connect_Admin”を選択します。
  28. “プログラムによるアクセスとAWSマネジメントコンソールによるアクセスを許可する” を選択します。
  29. “次のステップ:アクセス権限”を選択します。
  30. “フィルタポリシー”に、”okta”と入力します。
  31. 前に作成した両方のポリシーを選択します。
  32. “次のステップ:タグ”を選択します。
  33. “次のステップ:確認”を選択します。
  34. “ロール名”に”Okta_Role”と入力します。
  35. “ロールの作成”を選択します。
  36. Okta タブに戻ります。
  37. “Advanced Sign-On Settings”セクションで、コピーしたIDプロバイダーARN を “Identity Provider ARN”フィールドに貼り付けます。
  38. “Done”を選択します。

アプリケーションが作成されたので、次にAWSへのアクセスを許可します。これを行うには、先にダウンロードした認証情報ファイルが必要です。

Okta にプログラムによるアクセスを提供するには :

  1. Okta 管理者アカウントにログインして”Applications”を選択します。
  2. “Amazon Connect Administrator”を選択します。
  3. “Provisioning”を選択します。
  4. “Configure API Integration”を選択します。
  5. “Enable API Integration”を選択します。
  6. “Access Key”フィールドに、credentials.csv ファイルのアクセスキーを貼り付けます。
  7. “Secret Key”フィールドに、credentials.csv ファイルからシークレットキーを貼り付けます。
  8. “Test API Credentials”を選択します。
  9. 認証情報が正常に検証されたら、 “Save”を選択します。
  10. “To App”を選択します。
  11. “Edit”を選択します。
  12. “Create Users”を有効にします。
  13. Saveをクリックします。
  14. ページが更新されたら、ページの下部までスクロールして”Amazon Connect Administrator Attribute Mappings”セクションまで移動します。属性のリストが表示されます。

Oktaにプログラムによるアクセスを提供すると、アプリケーションをユーザーに割り当てることができます。Okta 管理者でこれを実行します。

新しいアプリケーションを管理者ユーザーに割り当てるには :

  1. OktaにAdministrator にログインして、”Directory”を選択します。
  2. Amazon Connect インスタンスの構築時に設定した管理者ユーザーを選択します。
  3. “Assign Applications”を選択します。
  4. “Amazon Connect Administrator”の横にある、”Assign”を選択します。
  5. “Role”ドロップダウンで、”Okta_Role”を選択します。
  6. “SAML User Role”に、”Okta_Role”を選択します。
  7. “Save and Go Back”を選択します。
  8. “Done”を選択します。

アプリケーションをテストするには :

  1. 設定した Amazon Connect 管理者として Okta にログインします。
  2. “Amazon Connect Administrator”を選択します。
  3. 新しいタブが開きます。認証を実行し、Amazon Connect にリダイレクトします。
  4. これで、Amazon Connectに管理者としてログインできました。

Okta からの SAML 認証を使用して、Amazon Connectにログインする Amazon Connect管理者アプリができました。Amazon Connect Contact Control Panel(CCP)を起動する2つ目のアプリケーションを構築するには、Amazon Connectインスタンスの作成を除いた、上記の手順を繰り返し実行します。
要約すると、次のようになります。

    1. Oktaで新しいアプリケーションを作成します。
    2. IAMで新しいIDプロバイダーを作成します。
    3. 新しいIDプロバイダーを使用する新しいIAM ロールを作成します。
    4. 次の例の様に、CCP を指すRelay State URLに変更して、アプリケーションのセットアップを完了します。
      https://[region-id].console.thinkwithwp.com/connect/federate/[instance-id]?destination=%2Fconnect%2Fccp
      (訳注: 新しいCCP version 2を利用される場合は、最後の”ccp”の部分を”ccp-v2”としてください)
    5. アプリケーションのAPIアクセスを設定します。
    6. プロビジョニングを有効にします。
    7. アプリケーションをユーザーに割り当てます。
    8. Amazon Connectでエージェントユーザーを作成します。

注意 : 大文字と小文字の区別を含め、入力したユーザー名が Okta のユーザー名と正確に一致することが重要です。

 

仕組みについて

Okta のようなフェデレーションアプリケーションを使用すると、ユーザーは適切な認証情報、アクセス権限、セキュリティコントロールを使用して Amazon Connect にアクセスしてログインできます。
SAML リクエストは、以下のステップで実行されます。

  1. ユーザーはOktaアプリを起動するか、Oktaが生成するURLにアクセスします。
  2. Oktaは、組織のID ストアから認証をリクエストします。
  3. IDストアはユーザーを認証し、フェデレーションサービスに認証レスポンスを返します。
  4. 認証が成功すると、フェデレーションサービスはユーザーのブラウザに SAML アサーションをリターンします。
  5. ユーザーのブラウザは、SAML アサーションを AWSサインインSAMLエンドポイント(https://signin.thinkwithwp.com/saml) にPOSTします。AWS Sign-inは SAML リクエストを受け取り、リクエストを処理し、ユーザーを認証して、認証トークンを Amazon Connect に転送します。
  6. AWSからの認証トークンを使用して、Amazon Connectはユーザーを承認し、ブラウザはAmazon Connect にアクセスできます。

 

まとめ

本Blogでは、Oktaアプリケーションの作成と設定、AWS IDプロバイダーとAmazon Connectの設定についてご説明しました。これにより、社内のユーザーと管理者は、Oktaインターフェイスを介して、使い慣れた安全なプロセスを使用してAmazon Connect にログインできます。

Okta以外のSSO製品を使用している場合、同じプリンシパルとAWSの設定が利用できますが、SSOアプリケーションの設定はアプリケーションによって異なります。

Amazon Connectシングルサイン設定の詳細については、Amazon ConnectでIdentity Management用のSAMLを設定する を参照してください。Amazon Connectの詳細については、Amazon Connectのドキュメントを参照してください。

翻訳はソリューションアーキテクトの木村雅史が担当しました。原文はこちらです。