【IBMSecurityVerify】AWS IAMとISVをSAML連携してAWSマネジメントコンソールへSAML認証でログインする

# はじめに
IBM Security VerifyとAWS Identity and Access Management(IAM)とSAML連携させて、AWSマネジメントコンソールにログインする際にIdPであるISVを経由してログインさせます。

::: note warn
記事の内容は2023年12月1日時点のものになります。
:::

# 連携手順
## AWS側の設定
### AWS IAM ユーザ作成
AWSマネジメントコンソールへログインし、ひだり上の検索ボックスに「IAM」と入力しIAMダッシュボードを開きます。
![スクリーンショット 2023-12-01 150518.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/0647803f-63e3-19c8-acb8-020dde7fc5f3.png)
アクセス管理＞ユーザー　へ移動して「ユーザの作成」をクリックし、ユーザを追加する。
ユーザ名はこの後ISVで登録するユーザ名と値を揃えておきます（メールアドレス等）。
ユーザへのポリシーは手っ取り早く検証したかったため「ReadOnlyAccess」をアタッチしました。
![スクリーンショット 2023-12-01 151225.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/b80be495-f98c-4575-1804-ed07a284d17b.png)

### AWS IAM Idプロバイダの作成
アクセス管理 > IDプロバイダ　へ移動し、「プロバイダを追加」をクリック。
![スクリーンショット 2023-12-01 100900.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/dca2e9d2-52f9-82bb-df65-95c285d8c7e2.png)
プロバイダのタイプ→SAML
プロバイダ名→任意の名前
メタデータドキュメント→ISVから予めダウンロードしたメタデータファイルをアップロード
「プロバイダを追加」をクリック。
![スクリーンショット 2023-12-01 101309.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/cc998695-030d-4848-d10d-1660c46ceb96.png)

### AWS IAM ロールの作成
アクセス管理 > ロール 「ロールを作成」をクリック
![スクリーンショット 2023-12-01 101718.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/d9e9d18d-2ae9-ef9c-1fe4-8f4c697de48c.png)
信頼されたエンティティは、「SAML2.0フェデレーション」を選択。
SAML2.0ベースのプロバイダーは、前ステップで作成したIdプロバイダを選択。
![スクリーンショット 2023-12-01 102125.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/5e36b4ea-1c47-4994-1d9b-bc707ed95925.png)
ロールに対する許可ポリシーを追加します。ユーザへ与える権限と同じものを選択。
![スクリーンショット 2023-12-01 102932.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/f7f215f5-bc7c-fbdb-d66e-e9d8aa07028f.png)
ロール名に任意の名前を入れて、ロールを作成します。
![スクリーンショット 2023-12-01 103335.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/0db620ef-bb93-77c8-a3df-1c7422f7428a.png)
ロールが作成されました。
![スクリーンショット 2023-12-01 103354.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/a9d70aaf-73d3-3e4f-08bd-bd330de608b5.png)

## IBM Security Verify側の設定
### ISV アプリケーション追加
ISVのトップ画面のアプリケーション > アプリケーションの追加を選択。
検索窓に「amazon」で検索すると「**Amazon Web Services(IAM)**」が出てきますので、これを選択します。
※以前は「Amazon Web Services(AWS)」でしたが変わったようです。
![スクリーンショット 2023-12-01 110116.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/c49efd7c-f17f-cee6-a5b5-0ed8958a0a9c.png)

:::note warn
「aws」で検索すると下画面のように「AWS IAM Identity Center」がヒットします。今回こちらは使いませんのでご注意ください。
:::

![スクリーンショット 2023-12-01 160501.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/dda672f2-7e58-2f87-90d9-93634acea5ed.png)
サインオンタブを編集します。赤枠で示した、SAMLサブジェクトと属性マッピングの2つ目の箇所はソースを合わせておきます。

:::note 
**青枠の部分は属性値をカスタムする必要があります。いったん今の状態で保存し、後ほど編集します。**
:::

![スクリーンショット 2023-12-01 111338 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/77617c7d-f2e4-a828-2dc4-ada09b97fabb.png)


#### ISVに設定するAWS向け属性値マッピングについて
| 属性名 | 属性ソース |
|:-:|:-:|
|  https://aws.amazon.com/SAML/Attributes/Role	 |  自分で作成したカスタム属性名 |
|  https://aws.amazon.com/SAML/Attributes/RoleSessionName	 |  Prefferd_username |


### ISV アプリケーション追加後の編集
ディレクトリー > 属性　へ移動して、「属性の追加」をクリック。
![スクリーンショット 2023-12-01 111936.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/c1d37a5a-9fd9-5a54-69a1-c0fa55a7556d.png)
型と可用性では、「固定値」を選択。
![スクリーンショット 2023-12-01 112109.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/c61fc224-3240-e77a-d180-3004a30b64c2.png)
属性名は任意で名前をつけます。
![スクリーンショット 2023-12-01 112039.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/f922d022-1f9c-9ff1-a608-56c636fd68f8.png)
ソースおよび値には、属性値に以下の文字列を入力します。
```
arn:aws:iam::<AWSのアカウントID>:role/<作成したロールの名前>,arn:aws:iam::<AWSのアカウントID>:saml-provider/<作成したIdプロバイダ名>
```
データ型はストリング。
![スクリーンショット 2023-12-01 112258.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/ead99a7e-ed27-7b97-e024-4764ce3c1817.png)
アプリケーションの設定を編集します。

:::note info
先程の青枠の箇所で指定していた属性ソースを、追加で作成した属性ソースに置き換えます。
:::

![スクリーンショット 2023-12-01 112333 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/c10f92a8-b642-6a09-efd0-e666f61cfb9c.png)
ISV側の設定で、アプリケーション毎にアクセス権限を割り当てている場合は今回作成したユーザの追加を忘れずに行います。
![スクリーンショット 2023-12-01 113809 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/9e1f6a0b-7f8c-66f1-7711-30f10803c3cb.png)

## SAML認証でログインできるかテスト
ISVのログインを突破すると・・・
![スクリーンショット 2023-12-01 164035 - コピー - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/4e449130-3fac-fc8b-095b-9784b75e426a.png)
AWSマネジメントコンソール画面へ遷移できました。

:::note info
トップ画面の右上部に「ロール名/ユーザー名＠アカウントID」が表記されています。
:::

![スクリーンショット 2023-12-01 164057 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472957/a8ccdb92-b772-6e0b-c0b5-d9dfac268caf.png)
以上です。

# 参考
-  [IBM Security Verfiy で Amazon Connect とSAML連携する](https://qiita.com/fitz/items/d3011c8a038bbab084c3#ibm-security-verify-1-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E8%BF%BD%E5%8A%A0)
-  [SAML 2.0 ベースのフェデレーションについて](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_providers_saml.html)
- [IAM SAML ID プロバイダーの作成](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_roles_providers_create_saml.html)