IBM Security Verfiy で Amazon Connect とSAML連携する

# はじめに

IBM Security Verify と Amazon Connect でSAML連携してみました。
AWSアカウントの準備から必要な場合には、参考リンクをご参照ください。

# Amazon Connect の参考情報

以下のAmazon Connectのマニュアルを参考にしました。

- トライアルの申し込み
> Amazon Connect よくある質問
> https://aws.amazon.com/jp/connect/faqs/

- SAML連携ガイド
> Amazon Connect での IAM を使用した SAML の設定
> https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/configure-saml.html

# Amazon Connect SAML連携のポイント
- SP initiated SSOはサポートしていない。
- Amazon Connectへのユーザー登録は別途必要となる。
- IBM Security VerifyはAmazon Connectのユーザープロビジョニングはサポートしていない。
- Amazon Web Seriveは、属性として以下を渡す必要がある。

|属性名|値|備考|
|:--|:--|:--|
|https://aws.amazon.com/SAML/Attributes/Role|arn:aws:iam::Amazon Web Services アカウント ID:role/Amazon Web Services の役割名,arn:aws:iam::Amazon Web Services アカウント ID:saml-provider/Amazon Web Services のプロバイダー  |Amazon Web Serviceから値を取得|
|https://aws.amazon.com/SAML/Attributes/RoleSessionName |Amazon Web Services コンソールのログイン ID | emailアドレスなど設定値を渡す|


# IBM Secutiry Verifyがサポートするコネクタの確認

サポートするアプリケーション・コネクタに、Amazon Web Services エントリーからアクセスされる Amazon Web アプリケーションがあります。
対象のAmazon Web アプリケーションとしては、Amazon Connectはありませんでしたが、こちらのコネクタを利用して構成します。

![isv-connect-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/4d7464e6-d124-14dd-6bc2-cc936ce5092f.png)

> サポートされるアプリケーションとコネクター
> https://www.ibm.com/support/knowledgecenter/ja/SSCT62/com.ibm.iamservice.doc/references/r_supported_apps_and_connectors.html


# 構成手順
## Amazon Connect　#1 インスタンス作成
AWSのコンソールで、サービス-カスタマーエンゲージメント-Amazon Connectを選択します。
![isv-connect-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/c25e10b5-639d-1857-3907-34845bf7e04a.png)

今すぐ始めるを選択し、インスタンスの設定を行います。
![isv-connect-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/47f59d37-b70d-ab6d-9b35-6eb7370b5ee7.png)

「SAMLベースの認証」を選択し、アクセスURLの先頭部分にインスタンス名を入力します。
![isv-connect-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/05b839d7-cd28-cc10-82c8-c32dbff3f1a7.png)
管理者ユーザーに姓名、mailアドレスを設定する。
![isv-connect-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/84da9fc9-833a-689d-17e6-4fccd44052d6.png)
デフォルトのまま、「次のステップ」へ
![isv-connect-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/51a93e81-9769-078a-b9d7-5c1a35a99582.png)
設定を確認して、「インスタンスの作成」をクリック。
![isv-connect-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/0f3cfa87-888d-ffeb-0437-95029e6c1774.png)
![isv-connect-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/42149166-7995-83e0-2ec2-fccfad0c8908.png)
数分待って成功と表示されるのを確認します。「今すぐ始める」をクリックします。
![isv-connect-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/836b79d2-a937-660c-a227-b20456572dba.png)
Amazon Connectのインスタンス画面が表示されたら、インスタンス名をクリックします。
![isv-connect-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/82a75be4-8863-78a7-7015-1ac777e8d52c.png)
緊急アクセスのリンクから、Amazon Connectの管理画面が表示できます。
![isv-connect-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/cb99b422-c881-2bc0-12e1-7493f86d53d9.png)


## Amazon Connect　#2 IDプロバイダーの登録
次に、IDプロバイダーを登録します。AWSのコンソールで、サービス-セキュリティ、ID、および、コンプライアンス-IAMを選択します。
![isv-connect-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/0d5fa9a1-4311-f4b2-da0e-a67e3aa86ed3.png)
ID プロバイダーを選択し、「プロバイダの作成」をクリックします。
![isv-connect-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/fbb55f42-19f6-174d-2c7a-4615e10cf08e.png)
プロバイダーのタイプは「SAML」を選択し、任意のプロバイダ名を入力します。
メタデータドキュメントは、IBM Security VerifyのURLから事前にダウンロードしておいたものを指定します。
https://<自身のテナント名＞/appaccess/v1.0/templates/federations/metadata
![isv-connect-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/bfeb2afa-2ad7-1162-704b-53cf9c9a5240.png)
設定内容を確認して、「作成」をクリックします。
![isv-connect-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/77d09c7b-9f34-b8fc-2a1e-bdd9148248c3.png)
IDプロバイダーの作成は完了です。
![isv-connect-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/c9bd3b65-9a76-6d5c-b838-8b85c850b9b5.png)

## Amazon Connect　#3 ロール・ポリシーの登録
次にロールとポリシーを登録し、Federationの対象インスタンスを指定します。
ロールを選択し、「ロールの作成」をクリックします。
![isv-connect-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/c26939a7-0855-6e46-6776-aa0da037d8d5.png)
信頼されたエンティティの種類は、「SAML2.0フェデレーション」を選択します。
SAML プロバイダーは先ほど登録したIDプロバイダーを選択します。
属性や値が自動的に反映されたら、「次のステップ アクセス権限」をクリックします。
![isv-connect-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/0f8c4389-fc06-8a97-be97-b35984e12d95.png)
「ポリシーの作成」をクリックします。
![isv-connect-22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/1504231d-8ed1-d9cf-399d-30459b0fd01e.png)

JSON形式を選択して入力します。
```JSON形式での設定
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "connect:GetFederationToken",
            "Resource": "<インスタンス ARN>/user/${aws:userid}"
        }
    ]
}
```

![isv-connect-24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/84ccf5f3-fb53-1222-559d-34172b6b7504.png)

次にポリシーを作成します。任意の名前を入力し、「ポリシーの作成」をクリックします。
![isv-connect-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/c29c02b6-e71a-af03-f32e-eed2794c88e1.png)
作成したポリシーを選択して、「次のステップ：タグ」を選択します。
![isv-connect-26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/c1d45e1b-597b-06c0-c7af-c1668293b3dc.png)
次の画面ではデフォルトのまま、「次のステップ：確認」をクリックします。
![isv-connect-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/7499cc78-8b27-604e-705d-331c741f4a3a.png)

ロール名を設定して、「ロールの作成」をクリックします。
![isv-connect-27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/feb0b1fb-9359-61af-d470-6a1ef25560c2.png)

ロールが作成されたことを確認します。
![isv-connect-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/1b6fc54e-f499-fc7b-bf07-97b2402f872a.png)


## Amazon Connect　#4 ユーザー登録
以下のステップでユーザーを登録します。ログイン名は、IBM Security Verifyのログイン名と同じになるように設定します。
![isv-connect-34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/0d315f44-4b27-65a3-a35d-5377e14a4515.png)
![isv-connect-35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/75d0b534-776d-8f57-0a38-cca57476f77a.png)
![isv-connect-36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/b17b2a75-98bf-197e-a50d-213b8e95d0d0.png)
![isv-connect-37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/d3f68c4e-e2ee-30cd-2ebb-8e4156215edc.png)



## IBM Security Verify 　#1 アプリケーションの追加
IBM Security Verifyの管理画面-アプリケーションで、「アプリケーションの追加」をクリックします。
![isv-connect-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/e0775673-4d55-c142-fea4-55e886ccd96c.png)
Amazon We Service を検索します。
![isv-connect-45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/107a6a54-8a7d-f9bf-f7a3-652395a1230b.png)
デフォルトのまま保存します。
![isv-connect-46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/addc671b-cbfa-499a-8d07-a23365537bef.png)


## IBM Security Verify 　#2 属性追加

SAMLの属性に「https://aws.amazon.com/SAML/Attributes/Role」を設定するため、カスタム属性を登録します。
管理画面の構成-属性タブで、「属性の追加」をクリックします。
![isv-connect-49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/4e299d3a-08b2-59a2-50c2-b9d2cde523d9.png)
任意の名前を入力します。
![isv-connect-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/57e68060-438c-43ea-70d9-347a0aed64a3.png)
「固定値」を選択します。
![isv-connect-30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/72e9ef94-e62f-25a5-c2f1-d18e795ddcb8.png)
arn:aws:iam::Amazon Web Services アカウント ID:role/Amazon Web Services の役割名,arn:aws:iam::Amazon Web Services アカウント ID:saml-provider/Amazon Web Services のプロバイダー名 となるように値を設定します。
![isv-connect-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/bf6b92b2-84c6-e27e-8281-710d1e197454.png)
カスタム属性が保存されたことを確認します。
![isv-connect-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/66fd2232-7331-7d44-70d6-4c8fe451c65c.png)

## IBM Security Verify 　#2 属性マッピングの設定
Amazon Web Serviceコネクタの属性マッピングの設定を行い、「保存」します。

|属性名|値|
|:--|:--|
|NameID|Prefferd_username|
|https://aws.amazon.com/SAML/Attributes/Role|追加したカスタム属性名|
|https://aws.amazon.com/SAML/Attributes/RoleSessionName|Prefferd_username|

![isv-connect-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/43e9e8d5-f370-727f-64c5-a542c83712a2.png)

## 動作確認
ブラウザで以下のURLから、IBM Security Verifyのログイン、Amazon Connect画面の表示されることを確認します。

https://<IBM Security VerifyのURL＞/saml/sps/saml20ip/saml20/logininitial?RequestBinding=HTTPPost&PartnerId=urn:amazon:webservices&NameIdFormat=persistent&Target=https://<Amazon ConnectのRegion＞.console.aws.amazon.com/connect/federate/<Amazon Connectのインスタンス名＞

![isv-connect-40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/e6cf7501-4fae-3f4e-e38b-a436b12effd7.png)
![isv-connect-42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678692/98900b45-31f2-cfd2-492e-70e0e05975b3.png)

# 最後に
Amazon Web Serviceのコネクタには、Amazon Connectのリンクがないため、ホームページ上にアプリケーションアイコンが登録できません。
IBM Security Verifyのブックマーク機能やブラウザのブックマークにURLなどで代替ください。

# 参考リンク
- AWSのトライアル

> AWS の無料トライアルで実際に体験
> https://aws.amazon.com/jp/free/start-your-free-trial/