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を設定するを簡略化したものになっています。
本投稿で行う設定では、以下を使用します。
このステップを完了するには、以下が必要です。
- アクティブなAWSアカウント。
 - 新しいIAM ロール、ポリシー、およびユーザーを作成できるIAM権限。
 - 新しいAmazon Connectインスタンスを作成できるIAM権限。
 - Oktaアカウント。
本投稿では、Okta 開発者アカウントを使用したステップを示します。これは機能的には標準のアカウントと変わりません。 
Amazon Connect インスタンスを作成する
Amazon Connect ではインスタンスの作成時に、使用するID管理システムを選択します。一度選択すると、後で変更することはできません。そのため、Oktaと統合するために、新しいAmazon Connectインスタンスを作成する必要があります。このブログでは、Amazon Connect設定の詳細については説明いたしません。Amazon Connectインスタンスの設定方法の詳細については、Amazon Connect 管理者ガイドの Amazon Connect の使用開始セクションを参照してください。
SAML 2.0 ベースの認証を使用するAmazon Connectインスタンスを新規作成するには:
- AWS マネジメントコンソールでAmazon Connectコンソールを開きます。
 - 使用するリージョンを確認します。
 - 以下のいずれかを実行します。 
         
- 選択したリージョンで Amazon Connect インスタンスをまだ作成していない場合は、”今すぐ始める”を選択します。
 - 選択したリージョンで Amazon Connect インスタンスを以前に作成している場合は、”インスタンスを追加する”を選択します。
 

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

 - “ステップ 3:テレフォニーオプション”はデフォルトのままで、 次のステップを選択します(後で変更できます)。

 - “ステップ 4: データストレージ” はデフォルトのままで、 次のステップを選択します(後で変更できます)。

 - “ステップ 5:レビューと作成”で、設定を確認し、”インスタンスの作成”を選択します。

 - インスタンスが作成された後は、コンタクトセンターのセットアップを行う事ができます(Amazon Connectのドキュメントを参照してください)。

 
Amazon Connectインスタンスが作成されましたので、OktaがリソースにアクセスするためのAWS Identity and Access Management(IAM) ポリシーを作成します。
IAMポリシーを作成する
SAML統合のために、特定のリソースへのアクセスを許可する適切なポリシー作成が必要です。ここでは必須となる2つのポリシーを作成します。1つ目のポリシーでは、このAmazon Connectインスタンスのすべてのユーザーに対してフェデレーションを許可します。2つ目のポリシーでは、OktaがIAM ロールとアカウントエイリアスを一覧表示することを許可します。
Amazon Connectのフェデレーションポリシーを作成するには :
- IAM コンソールを開きます。
 - ナビゲーションペインで、 “ポリシー”を選択します。
 - “ポリシーの作成”を選択します。
 - JSONタブを選択します。
 - 次のポリシーをエディタに貼り付けて、既存のコンテンツを置き換えます。 
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": "connect:GetFederationToken", "Resource": [ "**YOUR ARN**/user/${aws:userid}" ] } ] } - **YOUR ARN**の部分をAmazon ConnectインスタンスのARNに変更します。ARNを参照するには :
a. 新しいタブを開き、Amazon Connectコンソールに移動します。
b. インスタンスエイリアスを選択します。
c. インスタンス ARN の値をコピーします。 - **YOUR ARN**の変更を確認し、 “ポリシーの確認”を選択します。
 - ポリシーに okta_federation_policy など名前を付けます。

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

 - オプションで、ポリシーの説明を入力します。
 - ポリシーの作成を選択します。
 
ポリシーが作成できたら、AWSリソースへプログラムからアクセスするIAM ユーザーを作成します。これにより、OktaはAWSアカウントから適切なリソースを取得できるようになります。
ユーザーを作成するには :
- IAM コンソールを開きます。
 - ナビゲーションペインで、 “ユーザー”を選択します。
 - “ユーザーを追加”を選択します。
 - “ユーザー詳細の設定”セクションで、ユーザー名(okta_cli_user など)を入力します。
 - “AWSアクセスの種類を選択”セクションで、”プログラムによるアクセス”を選択します。

 - “次のステップ:アクセス権限”を選択します。
 - “アクセス許可の設定”セクションで、 “既存のポリシーを直接アタッチ”を選択します。
 - 検索フィールドに”okta”と入力します。使用可能なポリシーが以下のようにフィルタリングされ表示されます。

 - 前に作成したポリシーを選択します。
 - “次のステップ:タグ”を選択します。
 - 必要に応じて、タグを追加し、”次のステップ:確認”を選択します。

 - “ユーザーの作成”を選択します。
 - 成功ページで、ユーザー認証情報を含む credentials.csv ファイルをダウンロードします。

 
ユーザーが作成されたので、Amazon Web ServicesアプリケーションをOktaに追加し、IAM IDプロバイダーをあわせて構築します。これは、それぞれがお互いの情報に依存するため必須になります。OktaのAmazon Web Services アプリから始めます。
Amazon Web ServicesアプリケーションをOktaに追加し、IDプロバイダーを作成するには :
- Okta 管理者アカウントにログインします。
 - 開発者ダッシュボードを使用している場合は、左上隅のドロップダウンから “Classic UI”を選択してClassic UI に切り替えます。

 - “Applications”を選択します。
 - “Add Application”を選択します。

 - 検索バーに、”AWS Account Federation”と入力します。

 - “AWS Account Federation”アプリケーションの横にある”Add”を選択します。
 - “Application label”に、”Amazon Connect Administrator”と入力します。
 - “Your AWS Login URL”に、”https://console.aws.amazon.com/”と入力します。
 - 他のすべてのボックスはデフォルトのままにして、”Next”を選択します。

 - “Sign-On Options”ページの”Sign On Methods”セクションで、”SAML 2.0″を選択します。
 - “SAML 2.0″セクションの”Default Relay State” に、次のように URL を入力します。
https://[region-id].console.aws.amazon.com/connect/federate/[instance-id]
[region-id]を、Amazon Connect インスタンスを作成したリージョン名に置き換えます(東京リージョンの場合はap-northeast-1 など)。
[instance-id]をインスタンスのインスタンス ID に置き換えます。
インスタンス ID を確認するには :- a. 新しいタブを開き、Amazon Connectコンソールに移動します。
 - b. インスタンスエイリアスを選択します。
 - c. インスタンス ID は、インスタンス ARN の最後の “/” の後の文字列全てです。
 - 例: 
arn:aws:connect:us-west-2:123456789:instance/00aa11b2-c333-4d55-e6f7-888g9999hh0 

 - “Identity Provider metadata”を右クリックし、リンク先のファイルを”metadata.xml”としてコンピュータに保存します。

 - このタブを閉じないでください。すぐ後でセットアップを続行する必要があります。
 - 新しいタブを開き、 IAM コンソールに移動します。
 - ナビゲーションペインで、”ID プロバイダー”を選択します。
 - “プロバイダの作成”を選択します。
 - “プロバイダーのタイプ”として、”SAML”を選択します。
 - “プロバイダ名”に、Okta_Connect_Adminと入力します。
 - “メタデータドキュメント”セクションで、ステップ12 で保存した “metadata.xml”ドキュメントを選択します。

 - “次のステップ”を選択します。
 - プロバイダー情報を検証し、”作成”を選択します。
 - 作成が完了したら、”Okta_Connect_Admin”を選択して詳細を表示します。
 - “プロバイダARN”をコピーし、今後使用できるようにテキストファイルに貼り付けておきます。

 - IAM コンソールのナビゲーションペインで、”ロール”を選択します。
 - “ロールの作成”を選択します。
 - “SAML 2.0 フェデレーション”を選択します。

 - “SAMLプロバイダー”セクションで、”Okta_Connect_Admin”を選択します。
 - “プログラムによるアクセスとAWSマネジメントコンソールによるアクセスを許可する” を選択します。
 - “次のステップ:アクセス権限”を選択します。
 - “フィルタポリシー”に、”okta”と入力します。
 - 前に作成した両方のポリシーを選択します。

 - “次のステップ:タグ”を選択します。
 - “次のステップ:確認”を選択します。
 - “ロール名”に”Okta_Role”と入力します。

 - “ロールの作成”を選択します。
 - Okta タブに戻ります。
 - “Advanced Sign-On Settings”セクションで、コピーしたIDプロバイダーARN を “Identity Provider ARN”フィールドに貼り付けます。

 - “Done”を選択します。
 
アプリケーションが作成されたので、次にAWSへのアクセスを許可します。これを行うには、先にダウンロードした認証情報ファイルが必要です。
Okta にプログラムによるアクセスを提供するには :
- Okta 管理者アカウントにログインして”Applications”を選択します。
 - “Amazon Connect Administrator”を選択します。

 - “Provisioning”を選択します。

 - “Configure API Integration”を選択します。

 - “Enable API Integration”を選択します。
 - “Access Key”フィールドに、credentials.csv ファイルのアクセスキーを貼り付けます。
 - “Secret Key”フィールドに、credentials.csv ファイルからシークレットキーを貼り付けます。

 - “Test API Credentials”を選択します。
 - 認証情報が正常に検証されたら、 “Save”を選択します。
 - “To App”を選択します。

 - “Edit”を選択します。

 - “Create Users”を有効にします。

 - Saveをクリックします。
 - ページが更新されたら、ページの下部までスクロールして”Amazon Connect Administrator Attribute Mappings”セクションまで移動します。属性のリストが表示されます。

 
Oktaにプログラムによるアクセスを提供すると、アプリケーションをユーザーに割り当てることができます。Okta 管理者でこれを実行します。
新しいアプリケーションを管理者ユーザーに割り当てるには :
- OktaにAdministrator にログインして、”Directory”を選択します。
 - Amazon Connect インスタンスの構築時に設定した管理者ユーザーを選択します。

 - “Assign Applications”を選択します。

 - “Amazon Connect Administrator”の横にある、”Assign”を選択します。

 - “Role”ドロップダウンで、”Okta_Role”を選択します。
 - “SAML User Role”に、”Okta_Role”を選択します。

 - “Save and Go Back”を選択します。
 - “Done”を選択します。
 
アプリケーションをテストするには :
- 設定した Amazon Connect 管理者として Okta にログインします。

 - “Amazon Connect Administrator”を選択します。

 - 新しいタブが開きます。認証を実行し、Amazon Connect にリダイレクトします。

 - これで、Amazon Connectに管理者としてログインできました。

 
Okta からの SAML 認証を使用して、Amazon Connectにログインする Amazon Connect管理者アプリができました。Amazon Connect Contact Control Panel(CCP)を起動する2つ目のアプリケーションを構築するには、Amazon Connectインスタンスの作成を除いた、上記の手順を繰り返し実行します。
 要約すると、次のようになります。
-  
         
- Oktaで新しいアプリケーションを作成します。
 - IAMで新しいIDプロバイダーを作成します。
 - 新しいIDプロバイダーを使用する新しいIAM ロールを作成します。
 - 次の例の様に、CCP を指すRelay State URLに変更して、アプリケーションのセットアップを完了します。
https://[region-id].console.aws.amazon.com/connect/federate/[instance-id]?destination=%2Fconnect%2Fccp
(訳注: 新しいCCP version 2を利用される場合は、最後の”ccp”の部分を”ccp-v2”としてください) - アプリケーションのAPIアクセスを設定します。
 - プロビジョニングを有効にします。
 - アプリケーションをユーザーに割り当てます。
 - Amazon Connectでエージェントユーザーを作成します。
 
 
注意 : 大文字と小文字の区別を含め、入力したユーザー名が Okta のユーザー名と正確に一致することが重要です。
仕組みについて
Okta のようなフェデレーションアプリケーションを使用すると、ユーザーは適切な認証情報、アクセス権限、セキュリティコントロールを使用して Amazon Connect にアクセスしてログインできます。
 SAML リクエストは、以下のステップで実行されます。
- ユーザーはOktaアプリを起動するか、Oktaが生成するURLにアクセスします。
 - Oktaは、組織のID ストアから認証をリクエストします。
 - IDストアはユーザーを認証し、フェデレーションサービスに認証レスポンスを返します。
 - 認証が成功すると、フェデレーションサービスはユーザーのブラウザに SAML アサーションをリターンします。
 - ユーザーのブラウザは、SAML アサーションを AWSサインインSAMLエンドポイント(https://signin.aws.amazon.com/saml) にPOSTします。AWS Sign-inは SAML リクエストを受け取り、リクエストを処理し、ユーザーを認証して、認証トークンを Amazon Connect に転送します。
 - 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のドキュメントを参照してください。
翻訳はソリューションアーキテクトの木村雅史が担当しました。原文はこちらです。