【Azure/AWS】 AzureADを利用して、AWSコンソールへシングルサインオン(SSO)する

Azure ADを使ってAWS コンソールへSSOする設定を実施してみました。
調べてみると思ったよりも記事がなかったり、Azureのコンソールがアップデートされていたりで、意外と詰まりました。 今回利用しているAzureADのライセンスは、「free」です。

やっていることをMSのトライアルにある以下の構成図の通りです。
AzureAD側の1エンタープライズアプリケーションごとに、1AWS Account(IAM Role)の紐づけをしています。 f:id:ykoomaru:20190828140837p:plain

【参考】

Azure AD シングルサインオン 設定

エンダープライズアプリケーションの追加 [Azure 作業]

1. Azure Portalにログインし、「ホーム > Azure ADのディレクトリ >エンタープライズ アプリケーション - すべてのアプリケーション」画面より、[新しいアプリケーション] をクリック

f:id:ykoomaru:20190828151030p:plain

2. 「ギャラリーから追加する」画面の検索欄に [aws] と入力し、表示された [Amazon Web Services (AWS)]をクリック
※AWS Consoleではないので注意
f:id:ykoomaru:20190828151043p:plain

3. アプリケーションの名称を設定する画面が表示されるので、[名前]を入力し、[追加]をクリック
※ アプリケーションの表示名になるため、複数のAWS アカウントもしくは、IAM RoleをSAML連携する場合は、わかりやすい名称にすること。
アプリケーションがデプロイされるまで少し待ちます。

f:id:ykoomaru:20190828152134p:plain

SAML設定 ①[Azure 作業]

1.アプリケーションのデプロイが完了すると設定画面が表示される。[シングルサインオン] - [SAML] をクリック

f:id:ykoomaru:20190828152034p:plain

2.「基本的な SAML 構成」の [編集ボタン] をクリック
※事前に値が自動入力されていますが、必ずこの作業をする必要があります。

f:id:ykoomaru:20190828151114p:plain

3. 内容は変更せずに、[保存] をクリック
※連携するAWSアカウントが複数ある場合は、awsのURL(https://signin.aws.amazon.com/saml) 以降に [#任意の値 ] を入力します。

https://signin.aws.amazon.com/saml#2

f:id:ykoomaru:20190828151117p:plain

4. 「ユーザー属性とクレーム」の [編集ボタン] をクリック

f:id:ykoomaru:20190828151121p:plain

5. [新しいクレームの追加] をクリックし、以下の3つの値を追加 f:id:ykoomaru:20190828151124p:plain

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. 属性が追加されていることを確認

f:id:ykoomaru:20190828151127p:plain

7. 「SAML 署名証明書」-「フェデレーション メタデータ XML」の[ダウンロード] をクリック
ダウンロードしたxmlファイルを保存します。AWS上の作業で利用します。

f:id:ykoomaru:20190828151131p:plain

IAM関連設定 [AWS 作業]

ID プロバイダー設定

1. AWSコンソールにログインし、[IAM] - [Identity Providers]より、[Configure Provider]をクリック

f:id:ykoomaru:20190828152300p:plain

2. ID プロバイターの値を入力し、[Next Step]をクリック

  • Provider Type* : SAML
  • Provider Name* : <任意の値>
  • Metadata Document* : 先ほどAzure portalでダウンロードしたxmlファイルを指定する

f:id:ykoomaru:20190828152303p:plain

3. 「Verify Provider Information 」画面で内容を確認し、[Create] をクリック

f:id:ykoomaru:20190828152306p:plain

IAM Role 設定

  1. [IAM] - [Roles] より、[Create role]をクリック

f:id:ykoomaru:20190828152314p:plain

2. 「Choose a SAML 2.0 provider」画面にて必要項目を入力し、[Next] をクリック

  • SAML provider : <先ほど作成したID プロバイダー>
  • [Allow programmatic and AWS Management Console access]を選択

f:id:ykoomaru:20190828152317p:plain

3. SSOした後に付与する権限を選択し、[Next] をクリック

f:id:ykoomaru:20190828152418p:plain

4. 「Review]」画面にて、必要項目を入力し、[Create Role]をクリック

f:id:ykoomaru:20190828152424p:plain

IAM User 設定

1. [IAM] - [Policies] より、[Create policy] をクリック

f:id:ykoomaru:20190828152427p:plain

2. 以下のJSON を入力し、 [Review policy] をクリック
Iam Roleのリストの権限を付与しています。

f:id:ykoomaru:20190828152430p:plain

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
            "iam:ListRoles"
            ],
            "Resource": "*"
        }
    ]
}

3. 必要な項目を入力し、[Create Policy] をクリック

  • Name : <任意の値>
  • Description : <任意の値> f:id:ykoomaru:20190828152433p:plain

4. [IAM] - [Users] より、[Add User] をクリック
f:id:ykoomaru:20190828152436p:plain

5. 必要な項目を入力し、[Next] をクリック

  • User name : <任意の値>
  • Access type : Programmatic access 選択

f:id:ykoomaru:20190828152523p:plain

6. 「Set permissions」画面で、[先ほど作成したIAM Policy] を選択し、[Next]をクリック

f:id:ykoomaru:20190828152526p:plain

7. 「Review」 画面で内容を確認し、[Create user] をクリック

f:id:ykoomaru:20190828201049p:plain

8. 「Access key ID」と「Secret access key] の内容をコピーする

f:id:ykoomaru:20190828152530p:plain

SAML設定 ②[Azure 作業]

1. アプリケーション設定画面より、[プロビジョニング] をクリックし、以下の値を入力。最後に [保存] をクリック

  • clientsecret : "Access key ID"
  • シークレット トークン : "Secret access key"

f:id:ykoomaru:20190828151416p:plain

2. 再度 [プロビジョニング] をクリックし、プロビジョニング状態の [オン] をクリックし、 [保存] をクリック

f:id:ykoomaru:20190828151420p:plain

3. IAM Roleの状態を取得していることを確認する

f:id:ykoomaru:20190828151425p:plain

アプリケーションの紐づけ [Azure 作業]

Azure ADのFree プランでは、ユーザーとの紐づけのみ可能なので、ユーザーと紐づけます。

1. アプリケーション設定画面より、[プロビジョニング] をクリックし、[ユーザーの追加] をクリック f:id:ykoomaru:20190828151428p:plain

2. 以下の必要な項目を選択し、[割り当て] をクリック

  • ユーザー : 割り当てを行うユーザーを選択
  • ロールの選択 : AWS側で作成したロール名を選択

f:id:ykoomaru:20190828151431p:plain

3.ユーザーが表示されていることを確認する f:id:ykoomaru:20190828151434p:plain

動作確認

1. ブラウザで https://myapps.microsoft.com/ にアクセスし、 紐づけしたユーザーでログインする
2. AWSのアイコンが一覧に表示されているので、アイコンをクリック f:id:ykoomaru:20190828151507p:plain

3. AWSコンソールにログインできることを確認する f:id:ykoomaru:20190828151504p:plain

以上で設定は完了となります。

最後に

今回は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を利用してください。