雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

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