Azure ADを使ってAWS コンソールへSSOする設定を実施してみました。
調べてみると思ったよりも記事がなかったり、Azureのコンソールがアップデートされていたりで、意外と詰まりました。 今回利用しているAzureADのライセンスは、「free」です。
やっていることをMSのトライアルにある以下の構成図の通りです。
AzureAD側の1エンタープライズアプリケーションごとに、1AWS Account(IAM Role)の紐づけをしています。
【参考】
- チュートリアル:Azure Active Directory シングル サインオン (SSO) とアマゾン ウェブ サービス (AWS) の統合 | Microsoft Docs
- How to automate SAML federation to multiple AWS accounts from Microsoft Azure Active Directory | AWS Security Blog
Azure AD シングルサインオン 設定
エンダープライズアプリケーションの追加 [Azure 作業]
1. Azure Portalにログインし、「ホーム > Azure ADのディレクトリ >エンタープライズ アプリケーション - すべてのアプリケーション」画面より、[新しいアプリケーション] をクリック
2. 「ギャラリーから追加する」画面の検索欄に [aws] と入力し、表示された [Amazon Web Services (AWS)]をクリック
※AWS Consoleではないので注意
3. アプリケーションの名称を設定する画面が表示されるので、[名前]を入力し、[追加]をクリック
※ アプリケーションの表示名になるため、複数のAWS アカウントもしくは、IAM RoleをSAML連携する場合は、わかりやすい名称にすること。
アプリケーションがデプロイされるまで少し待ちます。
SAML設定 ①[Azure 作業]
1.アプリケーションのデプロイが完了すると設定画面が表示される。[シングルサインオン] - [SAML] をクリック
2.「基本的な SAML 構成」の [編集ボタン] をクリック
※事前に値が自動入力されていますが、必ずこの作業をする必要があります。
3. 内容は変更せずに、[保存] をクリック
※連携するAWSアカウントが複数ある場合は、awsのURL(https://signin.aws.amazon.com/saml) 以降に [#任意の値 ] を入力します。
https://signin.aws.amazon.com/saml#2
4. 「ユーザー属性とクレーム」の [編集ボタン] をクリック
5. [新しいクレームの追加] をクリックし、以下の3つの値を追加
Name | ソース属性 | 名前空間 | 必須 / 任意 |
---|---|---|---|
RoleSessionName | user.userprincipalname | https://aws.amazon.com/SAML/Attributes | 必須 |
Role | user.assignedroles | https://aws.amazon.com/SAML/Attributes | 必須 |
SessionDuration | 「900 秒 (15 分) から43200 秒 (12 時間) の値を指定してください」 | https://aws.amazon.com/SAML/Attributes | 任意 |
※ SessionDuration は、コンソールセッションの有効期限。デフォルトは90秒(15分)
6. 属性が追加されていることを確認
7. 「SAML 署名証明書」-「フェデレーション メタデータ XML」の[ダウンロード] をクリック
ダウンロードしたxmlファイルを保存します。AWS上の作業で利用します。
IAM関連設定 [AWS 作業]
ID プロバイダー設定
1. AWSコンソールにログインし、[IAM] - [Identity Providers]より、[Configure Provider]をクリック
2. ID プロバイターの値を入力し、[Next Step]をクリック
- Provider Type* : SAML
- Provider Name* : <任意の値>
- Metadata Document* : 先ほどAzure portalでダウンロードしたxmlファイルを指定する
3. 「Verify Provider Information 」画面で内容を確認し、[Create] をクリック
IAM Role 設定
- [IAM] - [Roles] より、[Create role]をクリック
2. 「Choose a SAML 2.0 provider」画面にて必要項目を入力し、[Next] をクリック
- SAML provider : <先ほど作成したID プロバイダー>
- [Allow programmatic and AWS Management Console access]を選択
3. SSOした後に付与する権限を選択し、[Next] をクリック
4. 「Review]」画面にて、必要項目を入力し、[Create Role]をクリック
IAM User 設定
1. [IAM] - [Policies] より、[Create policy] をクリック
2. 以下のJSON を入力し、 [Review policy] をクリック
Iam Roleのリストの権限を付与しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles" ], "Resource": "*" } ] }
3. 必要な項目を入力し、[Create Policy] をクリック
- Name : <任意の値>
- Description : <任意の値>
4. [IAM] - [Users] より、[Add User] をクリック
5. 必要な項目を入力し、[Next] をクリック
- User name : <任意の値>
- Access type : Programmatic access 選択
6. 「Set permissions」画面で、[先ほど作成したIAM Policy] を選択し、[Next]をクリック
7. 「Review」 画面で内容を確認し、[Create user] をクリック
8. 「Access key ID」と「Secret access key] の内容をコピーする
SAML設定 ②[Azure 作業]
1. アプリケーション設定画面より、[プロビジョニング] をクリックし、以下の値を入力。最後に [保存] をクリック
- clientsecret : "Access key ID"
- シークレット トークン : "Secret access key"
2. 再度 [プロビジョニング] をクリックし、プロビジョニング状態の [オン] をクリックし、 [保存] をクリック
3. IAM Roleの状態を取得していることを確認する
アプリケーションの紐づけ [Azure 作業]
Azure ADのFree プランでは、ユーザーとの紐づけのみ可能なので、ユーザーと紐づけます。
1. アプリケーション設定画面より、[プロビジョニング] をクリックし、[ユーザーの追加] をクリック
2. 以下の必要な項目を選択し、[割り当て] をクリック
- ユーザー : 割り当てを行うユーザーを選択
- ロールの選択 : AWS側で作成したロール名を選択
3.ユーザーが表示されていることを確認する
動作確認
1. ブラウザで https://myapps.microsoft.com/ にアクセスし、 紐づけしたユーザーでログインする
2. AWSのアイコンが一覧に表示されているので、アイコンをクリック
3. AWSコンソールにログインできることを確認する
以上で設定は完了となります。
最後に
今回はAzure ADのユーザーとAWSアカウントを紐づけましたが、実環境で設定するなら管理を簡略化するために、AzureのSecurity Groupを紐づけると良いです。 そのためには、Azure ADのライセンスをPREMIUM P1以上にする必要があります。
料金 - Active Directory | Microsoft Azure
複数のAWSアカウントやIAM Roleへシングルサインオンする場合は、ライセンスに注意が必要です。FreeやOFFICE 365では、連携できるアプリケーション数は10となっています。それ以上の連携が必要な場合は、PREMIUM P1やPREMIUM P2を利用してください。