弊社ではGoogleWorkspaceを主なグループウェアとして利用しているので、GoogleWorkspaceをIdPにしてAWSマネジメントコンソールへログインをSSO(SingleSignOn)にしたいと思います。公式マニュアルも分かりやすいですが、画像や解説がないので補足しながら解説します。
目次
はじめに
設定を始める前にIdPやSP、SAML等の登場人物について概要を理解しておきたいところです。ものすごーく簡単に絵にかくとこんな感じです(正確ではないのでイメージを理解するためだけに使ってください)。要はGoogleWorkspaceにさえログインしていれば、AWSマネジメントコンソールにID・パスワードなしでログイン出来ることを目指します。
IdPとは
IdPとは「Identify Provider」の略で、その名の通りIDのプロバイダーを指します。プロバイダーというとインターネット回線のサービスを提供する事業者(フレッツ光とか)を想像される方も多いと思いますが、provideとは「提供」「供給」という意味の単語ですので、正確にはインターネット接続プロバイダーとでも呼ぶのが正しいと思います。
少し話がそれましたが、IDプロバイダーとはIDに関わることを提供するサービスのことです。IDに関わること(=認証)はIdPが実施しますよ、という役割を担います。
SPとは
SPとは「Service Provider」の略で、今回の例でいうとAWSマネジメントコンソールにあたります。サービスの提供者で、ログインした後のサービスのことです。
SSO、SAMLとは
SSOとは「SingleSignOn」の略で、1回のサインオン(ログイン)のことです。今回の例でいうと、GoogleWorkspaceにさえログインできていれば、AWSマネジメントコンソールにはログインせずにつながることを意味します。SSOを利用していないと、GoogleにログインするIDやパスワード、AWSマネジメントコンソールにログインするためのID・パスワードをそれぞれ管理してそれぞれ入力しないといけませんが、管理する煩わさ、ログイン行為を実施する面倒さ等の解決につながる仕組みです。
SAMLとは「Security Assertion Markup Language」の略で、SSOを実現するための仕組みのことです。SSOを実現するための共通規格を指しており、XMLで作成されます。
すごく簡潔に作業内容を説明する
以上を踏まえて、設定方法を簡潔にお伝えするとこんな感じです。
- AWSマネジメントコンソール(SP)にGoogleWorkspaceをIdPに使ってね、と設定しておく
- GoogleWorkspaceにはAWSマネジメントコンソールから認証を聞かれたら答えてね、と設定しておく
上記をしておくことで、AWSマネジメントコンソールにログインしようとする → AWSマネジメントコンソールはGoogleに聞く → GoogleはOKという → ログイン出来る、という形が出来上がります。
Google管理コンソールでの作業①
Google管理コンソールから以下の作業を実施します。
AWS用のカスタムユーザー属性を作成
解説
GoogleWorkspaceのカスタム属性とは、その名の通りカスタムで作成した属性のことで、Googleで標準管理されていない属性を自由に作成することが出来る機能です。例えば、従業員マスタのようにGoogleWorkspaceを使いたいとしたら、社会保険の加入日や被保険者番号をカスタム属性として追加することが出来ます。(参考:ユーザー プロフィールのカスタム属性を作成する)
① ディレクトリ>ユーザ画面 から その他のオプション>カスタム属性を管理します をクリック
② 以下の要領でカスタム属性を追加
設定内容
カテゴリ: Amazon
説明: Amazonカスタム属性
名前: 役割
情報の種類: テキスト
公開設定: ユーザーと管理者が閲覧可能
値の数: 複数の値
Google の ID プロバイダ(IdP)情報の取得
解説
IdPのメタデータとはGoogleWorkspace(IdP)とAWSマネジメントコンソール(SP)の間で信頼関係を結ぶのに使用するデータです。IdP側の情報をSP側に登録することで、SP側はそのIdPを信頼して、認証を任せるようになる、という仕組みです。(ちょっと正確性に欠けますが)、Aさん(ユーザ)がBさん(SP)にCさん(IdP)は信頼できる人なのでCさんに任せてくださいね、と橋渡しをしておくことのような感じです。「SSO IdP SP」等と検索すると図解しているサイトがたくさん出てきますので、詳細を知りたい場合は調べてみてください。
① セキュリティ>Google を SAML IdP とした SSO から メタデータをダウンロード をクリック
② ダウンロードしたxmlファイルは以降の作業で使用します。
AWSマネジメントコンソールでの作業
AWSマネジメントコンソールにログインし、AWSをサービスプロバイダ(SP)として設定します。
IdPの作成
① IAM>ID プロバイダ から ID プロバイダを作成をクリック
② IDプロバイダーの追加は以下の要領で入力する。
③ IDプロバイダーのARNを後で使うのでコピーしておいてください。(ARNとは「arn:aws:iam::[アカウント番号]:role/GoogleWorkspaceRole」のような番号のことです)
IAMロール作成
IdPを作成すると、AWSマネジメントコンソールに以下のようなメッセージが出ます。メッセージに従いIAMロールを作成します。
① IAM > ロール > ロールの作成で以下要領でロールを作成する
次の画面の「ステップ 2:許可を追加」については、当該ロールに許可するポリシーをアタッチします。(AdministratorAccess等)作成が完了したらARNを後で使うのでコピーしておいてください。
Google管理コンソールでの作業②
Google を SAML ID プロバイダ(IdP)として設定
① アプリ>ウェブアプリとモバイルアプリからアプリの検索をクリック
② 検索欄に「Amazon Web Services」と入力し、出てきたアプリを選択
③ 自動入力されているので何も変更せず次へ進み、属性のマッピングには以下を入力する。当アプリを使用出来るグループは後でも設定可能なので、後で設定する。
GoogleDirectoryの属性 | アマゾン ウェブ サービスの属性 |
Basic Information>Primary Email | (自動設定) |
[Amazon] > [役割] ※先に作成したカスタム属性 | (自動設定) |
④ SSOさせたいユーザの ユーザー情報 > Amazon > 役割にコピーしたARNを入力する。(IDプロバイダーのARNとIAMRoleのARNをカンマ区切りで入力)
テスト
① GoogleWorkspace管理コンソールから、SAMLログインをテストをクリック
②ログインできました。
補足
- GoogleとAWSどちらも公式ドキュメントで手順を出しています。
- IAMユーザの作成は不要でログインできます。
- エラーが発生したら以下を参照してください