selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

G SuiteをAWSのIDaaSとして使ってみたけど個人的にはイマイチだった

概要

G Suiteには Cloud Identity という IDaaSのサービスがあります。 G Suiteをすでに利用しているなら、こいつをIDaaSとして使えれば低コストでいけます。 なので、ちょっと試してみました。僕の認識不足な部分でイマイチな結論だしている部分があったらコメント貰えると嬉しいです。

support.google.com

TL; DR

  • 基本的には下記資料の手順に従って設定をした
  • https://aws.amazon.com/jp/blogs/security/how-to-set-up-federated-single-sign-on-to-aws-using-google-apps/
  • 設定のためには、Directory APIの設定ができる権限が必要
  • ユーザー情報の一つの属性として設定する必要がある
    • 権限は個人単位で設定しなければならない
  • 結論としては利用しない
    • APIで構築することに寄せるか、consoleでの設定に寄せるかしてほしい
    • 権限管理がグループ・組織ではなく、個人に紐づくのはびみょう

設定手順について

https://aws.amazon.com/jp/blogs/security/how-to-set-up-federated-single-sign-on-to-aws-using-google-apps/

基本的には上の手順でやってけば良い。現在はG Suite側にAWSのコネクタがあるので、それを使えばもっと手間が省ける。 ざっくりいうと、下記のような内容になる。ここでは、細かい作業内容を詳細に記載しない。

  • G Suite側にてIdpの証明書を発行する
  • AWS側にてG SuiteのIdpを登録する
  • AWS側にて G Suiteからフェデレーションアクセスする際のロールを作る
  • G Suite側にてフェデレーションアクセスする際のロールを指定する custom schemaを作成する
  • G Suite側にてService Providerの設定を行う

SPにアクセスする方法

f:id:selmertsx:20180613150820p:plain

これはめっちゃ便利。みんなchrome使ってるだろうし、IDaaS専用のページから遷移しなくてよいの良い。

微妙だったところ

設定にAPIが必要である

f:id:selmertsx:20180613150837p:plain ※ 面倒だったので、webコンソール上から実行。

{
  "customSchemas": {
    "SSO": {
      "role": [
        {
          "value": "arn:aws:iam::xxx:role/TestGsuiteReadOnlyRole,arn:aws:iam::xxx:saml-provider/TestGoogleApps",
          "customType": "TestGsuiteReadOnlyRole"
        }
      ]
    }
  }
}
{
  "fields":
    [
      {
          "fieldName": "role",
          "fieldType": "STRING",
          "readAccessType": "ADMINS_AND_SELF",
          "multiValued": true
      }
  ],
  "schemaName": "SSO"
}
  • SPとの連携において、SP側が求めるパラメータを渡すためには、APIを使って G Suite側のユーザー情報を拡張しなければならない。
  • 影響範囲を考えるとstaging環境での検証が必須
  • 事故が起きたときの被害が大きい

AWSのIDaaSとしての権限管理はユーザー単位でしかできない

f:id:selmertsx:20180613151123p:plain

{
  "customSchemas": {
    "SSO": {
      "role": [
        {
          "value": "arn:aws:iam::xxx:role/TestGsuiteReadOnlyRole,arn:aws:iam::xxx:saml-provider/TestGoogleApps",
          "customType": "TestGsuiteReadOnlyRole"
        }
      ]
    }
  }
}

こんな感じでAWSとの連携においては、ロールの設定はユーザー個人ごとに行う必要がある。人の異動に応じて権限を変えたいので、個人ではなくてグループ・所属に権限をもたせたい。それをやるためには、権限管理用のサービス作らないといけない。