📖

【AWSハンズオン】SSOログインの設定をしてみる【AWS Organization × IAM Identiry Center】

2023/12/10に公開

Background

知人とAWSを使って共同開発していこうという流れの中で、アカウント周りをスッキリと管理したくなった。IAMユーザーを作ってやっていく方法でも良いけれど、どうせならAWS OrganizationとIAM Identity Centerとを組み合わせてSSOログインを実現する手法の知見も得たかった。ので、SSOユーザーに適切な権限をつけてログインさせる方式を試すことにした。

最終的には、以下のように「IAM Identity Centerで発行した"ユーザー"にログインした人が、その"ユーザー"が使うことを許された"アカウント"を選択してAWSリソースを触ることができる」状態をめざす。

IAM Identity Centerでユーザーの追加

IAM Identity Center > ユーザー から「ユーザーを追加」。

「ユーザーの詳細を指定」して次へ進む。

グループへの追加ができるが、今回はスキップして次へ。

最終確認してユーザーを追加。

AWS Organizationsでアカウントの追加

ここまできたら、今度は AWS Organizations > AWS アカウント で「AWSアカウントを追加」する。

「AWSアカウントを作成」を選択し、先ほどIAM Identity Centerで入力したプライマリEメールアドレスを入力してアカウント作成する。

1分程度待つとアカウントが作成されて「組織」の下に追加される。

新規ユーザーにメールが3通届く

ここまでの操作で、新しいユーザーにはメールが3通届く。それぞれ以下のような件名になっているはず。

  • Invitation to join AWS IAM Identity Center (successor to AWS Single Sign-On)
  • アマゾンウェブサービス
  • Amazon Web Services アカウントの準備ができました - 今すぐ始めましょう

1通目の"Invitation to join..."にAccept Invitationのようなボタンがあるはずなので、押下してAcceptしてもらう。遷移先でpasswordの設定等を済ますとログインできるようになるが、この段階ではログインしても"You do not have any applications."というセンテンスだけが表示された画面に遷移する。

許可セットの作成と割り当て

次に、新しいユーザーに割り当てるための「許可セット」を IAM Identity Center > 許可セット から作成していく。

今回は「事前定義された許可セット」からReadOnlyAccessを選択して作っていく。

うまくいったら、一覧に新しく作った許可セットが表示される。

続いて許可セットを割り当てるためのグループを作る。

先ほど作成したユーザーを選択してグループ作成。

ここまでできたら、次は IAM Identity Center > AWSアカウント で「ユーザーまたはグループを割り当て」する。

先ほど作成したグループが選択できていることを確認したら、「許可セットを選択」でReadOnlyAccessの許可セットを選ぶ。

ちゃんと設定できると、アカウント一覧でReadOnlyAccess許可セットが与えられたことを確認できる。

新ユーザーがコンソールを閲覧できるように

ここまでできたら、新しいユーザーに再度ログインしてもらう。するとReadOnlyAccessでのログインメニューが表示され、マネジメントコンソールへ入れるようになる。これにて設定完了!🙌

(軽く案内だけ) SSOユーザーがaws cliを使うにはどうすれば?

SSOユーザーがaws cliを使うには、まずログインメニューからCommand line or programmatic accessをクリックしてGet credentials for ReadOnlyAccessというタイトルのモーダルを表示させる。するといくつかaws cliを使うにあたってのオプションが表示されるので、どれかを選んで設定するとaws cliが利用できるようになる。

ちなみにシーンによって複数のアカウントを使い分けるならawspを使ってサクサクとaws profileを切り替えるのが便利。

参考

https://docs.aws.amazon.com/ja_jp/organizations/latest/userguide/services-that-can-integrate-sso.html

Discussion