Closed4

AWS SSO

Takashi YamaharaTakashi Yamahara

Control TowerのOUにアカウントを属させて、OUの再登録を行うと、アカウントのrootユーザーメールアドレス宛にInvitation to join AWS Single Sign-Onという件名のメールが来る。

Hello Admin User,

Your AWS Organization (AWS Account #xxxxxxxxxxxx) uses AWS Single Sign-On (SSO) to provide access to AWS accounts and business applications.

Your administrator has invited you to access the AWS Single Sign-On (SSO) user portal. Accepting this invitation activates your AWS SSO user account so that you can access assigned AWS accounts and applications. Click on the link below to accept this invitation.

サインアップ > サインインし、アカウント > AWSAdministratorAccessのマネコンを選択するとマネコンにログインできる。

AWSReservedSSO_AWSAdministratorAccessというRoleでログインした状態となる。

また、アカウント内に以下のRoleが自動作成されていることが確認できた。

  • AWSReservedSSO_AWSAdministratorAccess_xxxxxxxxxxxxxxxx
  • AWSReservedSSO_AWSOrganizationsFullAccess_xxxxxxxxxxxxxxxx
  • AWSReservedSSO_AWSPowerUserAccess_xxxxxxxxxxxxxxxx
  • AWSReservedSSO_AWSReadOnlyAccess_xxxxxxxxxxxxxxxx
Takashi YamaharaTakashi Yamahara

Root OUのアカウントのSSOのコンソールを見ると、先ほどSSOの招待を受けたアカウントで、前述の4Roleのアクセス権限セットが存在することを確認できた。

Takashi YamaharaTakashi Yamahara

IdPとしてGoogle Workspacesを使うことにする。

SAML連携するところまでは、以下の記事の通りで実現できた。

https://sadayoshi-tada.hatenablog.com/entry/2020/12/28/155740

ただ、AWS SSO側にユーザーをいちいち作成しなければならないのがつらい。

Google Workspaceが情シス管理だったとすると、情シスからSREが情報共有を受けて、AWS SSO側にユーザーを追加しなければならない。その運用は(たとえAWS SSOのユーザーをTerraform管理していたとしても)つらい。


AWS SSOを使わず、SAML連携でシングルサインオンを実現することも可能なので、そちらも考えてみる。

この場合、AWS側はRoleのみ用意し、Google Workspace側で誰がどのRoleを引き受けできるかを管理することになる。Google Workspace側のユーザーをTerraform管理することもできるだろう。

https://registry.terraform.io/providers/hashicorp/googleworkspace/latest/docs/resources/user

ただ、やっぱりGoogle Workspace側は情シス管理のケースが多いだろうし、情シスにTerraformの利用をお願いしてやってくれるかは情シスにもよるだろう。


となると、AWS SSO利用にしてssosyncを使う以下の事例が最適解な気がする。

https://blog.studysapuri.jp/entry/2022/01/12/080000

ssosyncまでは使わないにしても、IdPのユーザーごとの権限はAWS SSOで集中管理できるので、AWS SSO無しSAML連携よりは、AWS SSOの方が便利かも。

Takashi YamaharaTakashi Yamahara

新規ユーザーを特定のAWSアカウントにSSOさせるまでの流れ

以下のような感じ

  • 事前準備
    • どのSSOグループが、どのAWSアカウントにログインできるのか、また何のアクセス権限セットを持つのかを設定する
        • FooDevelopersグループは、
          • foo-prodアカウントに、AWSReadOnlyAccess権限セットを持つ
          • foo-devアカウントに、AWSAdministratorAccess権限セットとAWSReadOnlyAccess権限セットを持つ
        • 結果はAWS SSOのAWSアカウント画面で確認できる
  • ユーザーを追加する
    • ユーザー名はIdPのIDと同じにする
      • 例えば、Google Workspaceのメールアドレス
    • そのユーザーを任意のSSOグループに追加する
        • FooDevelopersグループに追加する
  • ユーザーポータルURLにブラウザでアクセスしてもらう
  • アカウント一覧が表示される
    • foo-prodとfoo-dev
  • アカウントを選ぶと、アクセス権限セットが表示される
    • foo-prodは、AWSReadOnlyAccess
    • foo-devは、AWSAdministratorAccessとAWSReadOnlyAccess

その他

  • ユーザーは複数のグループに入れる
  • ユーザーまたはグループは各アカウントに対して、それぞれ複数のアクセス権限セットを持てる
  • アクセス権限セットは10個のAWS管理ポリシーと、1個のインラインポリシーを持てる
このスクラップは2022/03/29にクローズされました