📝

AWSにGoogle WorkspaceをつかってSSOしよう

2024/12/28に公開

前回[1]はAWS Organizationsで複数アカウントを管理するようにしましたが、今回はAWS IAM Identity Center(IIC)を使って各アカウントへログインできるようにします。

AWS IAM Identity Centerを有効化する

まずは、IICを有効にして設定してみようと思ったのですが、「IAM Identity Center のこのインスタンスには、組織に対する信頼されたアクセスがありません。」と言われてしまいました。
下にAWS Organizationsのページで信頼されたアクセスを有効にしてくださいと出ているのでAWS Organizationsのコンソールへ移動しましょう。

AWS OrganizationsのサービスにIICの項目がありました。ただ気になる記述があります。

注: ここでは、AWS のサービスで信頼できるアクセスを有効にしないことをお勧めします。
代わりに、他の AWS のサービスのコンソールを使用して、AWS Organizations での信頼できるアクセスを有効または無効にします。
これにより、他のサービスは、Organizations とのアクセスを有効または無効にするために必要なサポートタスクを実行できます。
詳細については、使用する AWS のサービスのドキュメントを参照してください。

とりあえずサービス→AWS IAM Identity Center(AWS Single SIgn-On) を選択してみます。
この中の信頼されたアクセスを有効にするをクリックします。
画像の様にここで有効にしてほしくなさそうな表示が出てきました。
IICのコンソールへ移動するボタンが出てきたのでクリックしてみると最初と同じコンソールが表示されます。
無限ループしています。どこかで抜け出さなくては。

今考えられる選択肢としては

  1. AWS Organizationsのコンソールから信頼されたアクセスを有効にする
  2. AWS Control Towerを使ってみる

AWS Control Towerを使う方にしてみたいと思います。
個人のアカウントでそこまでやる必要があるのかはちょっとなんとも言えないのですが使ってみようと思ったので。
これは別記事にまとめる予定です。この記事ではもうすでにIICが使える状態になったところから再開します。

Google Workspaceと連携

基本はAWSが提供しているドキュメントにやりたいことが書いてあるのでこちらを参照してください。[2]
この記事を作成時点では日本語と英語で内容が異なっているので、英語版のドキュメントを参考に進めていきます。
また、これ以降Google WorkspaceとAWSの画面を行き来しますので途中で閉じないようにしましょう。

Google Workspace側:SAMLアプリケーションの追加

これをやろうと思っている方はもちろんGoogle Workspaceのユーザーだと思いますが、特権管理者の権限を持つアカウントにサインインできることが必要となります。
特権管理者でGoogle Workspaceの管理コンソールへログインします。
左側のメニューからアプリ→ウェブアプリとモバイルアプリを選択し、アプリの追加→アプリの検索を選択します。
検索ボックスが出てきますのでAmazon Web Servicesと入力してリストからアプリ:Amazon Web Services, プラットフォーム:ウェブ(SAML)のものを選択します。
2つのやり方があるようですが、今回はオプション1のIdPメタデータをダウンロードする方法で進めます。メタデータをダウンロードボタンをクリックし、xmlファイルをダウンロードします。
この画面は閉じずにIICのコンソールを開きます。

AWS IIC側:アイデンティティソースの変更

IICの左側のメニューの設定を開き、設定画面のアクション→アイデンティティソースの変更をクリックします。
選択肢が3つ出てきますが、一番右にある外部IDプロバイダーを選択します。
外部アイデンティティプロバイダーを設定の画面の下の方にアイデンティティプロバイダーのメタデータという項目がありますので、先ほどダウンロードしたメタデータをIdP SAML メタデータからアップロードします。
この画面の上部にあるサービスプロバイダーのメタデータをGoogle Workspace側に入力しますので、IICの画面を閉じずにGoogle Workspaceの画面に戻ります。

Google Workspace側:サービスプロバイダの登録

Google Workspaceの画面で続行をクリックし、サービスプロバイダの詳細画面へ移動します。
ここで先程のサービスプロバイダーのメタデータに記載のあった情報を入力します。
それぞれ以下の表のように対応していますので、項目を間違えないように入力します。

IICの項目名 Google Workspaceの項目名
IAM Identity Center Assertion Consumer Service (ACS) の URL ACSのURL
IAM Identity Center の発行者 URL エンティティID
AWS アクセスポータルのサインイン URL 開始URL

名前IDはそれぞれ以下のように設定します。

名前IDの形式 名前ID
EMAIL Basic Infomation > Primary email

ここまで入力できたら続行をクリックします。

Google Workspace側:属性のマッピング

属性の項目でアプリとGoogle Directoryのマッピングを行います。
以下のように設定します。

Google Directoryの属性 アプリの属性(すでに入力済み)
Basic Infomation > Primary email https://aws.amazon.com/SAML/Attributes/RoleSessionName*
任意の項目
今回はEnployee Details > Department
https://aws.amazon.com/SAML/Attributes/Role*

これを入力終わったら完了をクリックします。画像のような画面が表示されればGoogle Workspace側の設定は終わりです。
AWS IICのコンソールの画面に戻りましょう。

AWS IIC側:変更を確定

画面の下の方に表示されている次へのボタンをクリックします。
変更を確定と表示された画面へ遷移したらステップ1、ステップ2で設定したものと同じものが表示されているかを確認します。
問題なければ確認及び確定の入力フィールドに承諾と入力してアイデンティティソースを変更をクリックします。
アイデンティティソースをIAM Identity Centerから外部IDプロバイダー(IdP)に正常に変更しました。と表示されていればOKです。

ここまででAWS IICとGoogle Workspace自体の連携はできたのですが、これだけでは実際にユーザーが使える状態にはなっていません。ここからは実際に使える状態に設定していきましょう。

実際に使える状態まで持っていく

Google Workspace側:権限を与える

Google Workspaceの管理コンソールから、アプリ→ウェブアプリとモバイルアプリをクリックし、表示されたリストからAmazon Web Servicesを選択します。
ユーザーアクセスが「オフ(すべてのユーザー)」となっているので、ユーザーアクセスの枠内をクリックし、サービスのステータスと表示された画面へ遷移します。
自分の場合、この組織には自分しかいないですし、将来的に人が追加されることもない想定です。なのでこのアカウントのすべてのユーザーでオンにしてもよいのですが、最小権限の原則に基づくならば、組織部門やグループで設定するのが良いでしょう。
自分の中で納得できるルールを決めたら、その項目でサービスのステータスをオンに変更します。

AWS IIC側:IICの自動プロビジョニングを有効にする

IICのコンソールで設定のページを開き、自動プロビジョニングに関するボックスにある有効にするをクリックします。
モーダルにSCIMエンドポイントとアクセストークンが表示されますのでアクセストークンを保存します。

Google Workspace側:自動プロビジョニングを設定する

Google Workspaceの管理コンソールから、アプリ→ウェブアプリとモバイルアプリをクリックし、表示されたリストからAmazon Web Servicesを選択します。
自動プロビジョニングを設定と書かれたリンクをクリックし、アクセストークンを入力する画面に遷移します。
先ほど取得したアクセストークンを入力し、続行をクリック。
エンドポイントURLには先ほど取得したSCIMエンドポイントの値を入力し、続行をクリック。
属性のマッピングの画面で、Google Directoryの属性とアプリの属性のマッピングを行います。
アプリの属性で*のついた属性がマッピングされていることを確認し、されていなければそれぞれ適切なマッピングを行います。マッピングが終了したら続行をクリックします。
プロビジョニング対象を選択することができますが、今回は省略して続行をクリック。
プロビジョニング解除のセクションではユーザーからアクセス権を剥奪するイベントへの対応法を選択できます。
それぞれの場合でアカウントを停止するか、削除するかを選択することができ、期間は以下の4パターンから選択できます。

  • 24時間以内
  • 1日後
  • 7日後
  • 21日後

アカウントを削除すると復元不能になりますので、注意して選択してください。
停止と削除を同時に選択している場合、削除の期間は停止の期間よりも長く設定したほうが良いです。

設定が終了したら完了をクリックし、設定画面へ遷移します。
設定しただけでは自動プロビジョニングは有効になっていないので、自動プロビジョニングの横にあるトグルスイッチをクリックして有効にします。
ちなみに現時点では翻訳にブレがあるのか、文中ではオンにするとありますが、有効にするをクリックします。

AWS IIC側:ユーザーが作成されたか確認する

IICのコンソールの左側のメニューからユーザーを選択し、該当するユーザーが作成されているかどうかを確認します。
作成されていない場合少し待てば作成されると思いますが、待っても作成されない場合やエラーとなった場合Google Workspace側の同期ログ等を確認してエラー原因を確認します。

AWS IIC側:Google Workspaceで作成したユーザーへ権限を付与する

ユーザーができたのでユーザーに対してアクセス権を付与しましょう。
IICのコンソールの左側のメニューからマルチアカウントのアクセス許可→AWS アカウントをクリックし、Organizations内のアカウントの一覧から権限を付与したいアカウントのチェックマークを入れてユーザーまたはグループの割り当てをクリックします。
権限を付与したいアカウントか、グループを選択します。今回自分はユーザーを選択しましたが、組織ではグループを割り当ててグループにユーザーを追加したほうが管理の手間を考えるとよいでしょう。
次へをクリックすると許可セットを選択する画面になります。何も許可セットを追加していない状態ではAWSによって事前定義済みな許可セットが表示されています。とりあえず今回はAdministratorAccessが必要だったので使いましたが、必要に応じてカスタム許可セットを作成しましょう。
次へをクリックすると確認画面が表示されますので送信をクリックしましょう。設定中の画面が表示された後、処理が完了したらAWSアカウントをクリックしたときと同じ画面に遷移します。

AWSアクセスポータルにログインする

ここまでできたらGoogle WorkspaceのアカウントでAWSへSSOする準備が整いました。
アクセスするためにはIICのダッシュボードに記載されているAWSアクセスポータルのURLを使用します。参考にしているドキュメント[2:1]によるとGoogleアプリランチャー(ChromeとかGmailにあるワッフルマーク)の中にAWSアクセスポータルのアプリがあるからそれを使うとあるのですが、自分の環境では追加されていませんでした。
AWSアクセスポータルにアクセスすると権限を付与したアカウントのリストが表示され、その中に付与した許可セットに基づく権限を持った状態でAWSマネジメントコンソールへアクセスできるリンクがあるのでそれを使用してマネコンに入りましょう。
入れて想定した通りの権限がありそうであれば手順は正常にできています。

脚注
  1. 個人でAWS Organizationsを使い始めてみた ↩︎

  2. Google Workspace と IAM Identity Center を使用して SAML と SCIM を構成する ↩︎ ↩︎

Discussion