AzureAD→AWS SSOへのSSO、プロビジョニング、プロビジョニング解除


これは

AzureADからAWS SSOへのSSO、プロビジョニング、プロビジョニング解除についての技術的な記事です。
プロジェクト全体の話はこちら

目次

  1. やりたいこと
  2. SSO設定
  3. プロビジョニング設定
  4. SSOテスト
  5. プロビジョニングテスト
  6. 参考
  7. 運用を考えてみる

1. やりたいこと

  • AzureADからAWS SSOへSSO、プロビジョニング、プロビジョニング解除を行う
  • AWSの権限設定はAWS SSOから行うことを想定

2. SSO設定

AzureADサイド

  1. Azure ADでエンタープライズアプリケーション登録を作成する
    ギャラリー以外のアプリケーションを選択する

  2. シングルサインオン > SAMLを選択する

  3. フェデレーション メタデータ XMLをダウンロードしておく

AWS SSOサイド

  1. AWS SSOを有効化する
  2. 設定-IDソースからIDソースをAADに変更する
  3. AWS SSO SAML メタデータをダウンロードしつつ、IdP SAML メタデータにAADでダウンロードしたメタデータXMLをアップロードする

AzureADサイド

  1. シングルサインオン > SAMLを選択する
  2. メタデータファイルをアップロードするから、AWS SSOでダウンロードしたSAMLメタデータをアップロードする

  1. テストをクリックして問題なければ終了

3. プロビジョニング設定

AWS SSOサイド

  1. 自動プロビジョニングを有効化して、SCIMエンドポイントアクセストークンを取得する

AzureADサイド

  1. プロビジョニングを選択して、前の手順で取得した情報をテナントURLシークレットトークンに入力する

  2. テスト接続して問題ないことを確認する

  3. マッピング > AADユーザプロビジョニングを選択

  4. 下記2つの属性は使用しないため、削除する
    facsimileTelephoneNumber属性
    mobile属性

  5. mailNickname属性を編集して、ソースをObjectIDに変更

  6. ユーザ、もしくはグループを割り当てて同期を開始する

4. SSOテスト

  1. AWS SSOポータルにアクセスして、Microsoftの認証画面にリダイレクトされることを確認する

  1. 認証完了したらSSOポータルにログイン完了

  2. AWS CLI SSOの初期設定

~# aws configure sso                                   
SSO start URL [None]: https://XXXXXXXX.awsapps.com/start                    
SSO Region [None]: ap-southeast-1                                               
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:

https://device.sso.ap-southeast-1.amazonaws.com/

Then enter the code:

GDRN-CPLB
The only AWS account available to you is: XXXXXXXX
Using the account ID XXXXXXXX
The only role available to you is: AdministratorAccess
Using the role name "AdministratorAccess"
CLI default client Region [ap-southeast-1]:                                     
CLI default output format [text]:                                               
CLI profile name [AdministratorAccess-XXXXXXXX]:                            

To use this profile, specify the profile name using --profile, as shown:

aws s3 ls --profile AdministratorAccess-XXXXXXXX
~# 

例としてS3一覧を表示してみる & SSOプロファイルを確認(IAMユーザ13banを使用)

~# aws2 s3 ls --profile AdministratorAccess-XXXXXXXX
2020-05-25 14:13:25 cf-templates-85l05w5jl33g-ap-southeast-1
~#
~# aws2 sts get-caller-identity
XXXXXXXX    arn:aws:iam::XXXXXXXX:user/13ban    AIDA53625ATMJMVMYDQJW
~# 

5. プロビジョニングテスト

  1. グループ参加させたらプロビジョニングできた
  2. グループから削除したらAWS SSOユーザは無効化された

6. 参考

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-sso.html
https://aws.amazon.com/jp/blogs/developer/aws-cli-v2-now-supports-aws-single-sign-on/

7. 運用を考えてみる

新規

  • 入社時にAzureADでエンジニアグループに入れる
    • アカウントの属性値を設定するとこで、自動でグループ参加させる
  • 自動でAWS SSOユーザが作成される
    • 現在、AWSユーザ持っていない人も作成されるが権限設定しなければ問題なし
  • AWS SSOサイドで権限を設定

利用

  • AWS SSOポータル使用
  • AWS CLIから使用

変更

  • 権限の変更
    • AWS SSOから権限を変更
  • ID棚卸し
    • AzureAD
    • SSOユーザ

停止

  • AzureADでグループからメンバー削除

廃止

  • AzureADでアカウント削除