G-gen の三浦です。当記事では Google Workspace(Cloud Identity)を使用して、Slack にシングルサインオン(以下、SSO)を設定する方法を紹介します。
基礎知識
シングルサインオン(SSO)とは
シングルサインオン(SSO)とは、一度の認証で複数のアプリケーションやサービスを利用できるようにするための仕組みです。利用者が複数のサービスを利用するとき、通常はサービスごとに ID とパスワードを入力します。これを1度で済むようにする仕組みが SSO です。
SSO を実装することで、以下の効果が得られます。
利便性向上
ユーザーはアプリケーションごとにパスワードを入力する必要がなくなります。セキュリティ強化
パスワードの管理が簡素化され、セキュリティリスクを軽減できます。
SAML 認証とは
SSO を実現するプロトコルの一つに SAML(Security Assertion Markup Language)があります。SAML は、認証情報を安全にやり取りするための標準規格です。現在では SAML 2.0 が標準とされています。
SAML による認証情報のやりとりを理解するためには、以下の2つの役割を理解する必要があります。
IdP(Identity Provider)
アイデンティティ(アカウント)を保存したり、管理する役割。SSO では認証を担う。当記事では Google Workspace が該当。SP(Service Provider)
認証済みのユーザーが実際に利用するサービス。今回の例では Slack が該当。
SAML 認証の流れ
Slack を例に取ると、ユーザーから見た認証の流れは以下のようになります。
- ユーザーが Slack(SP) にアクセス
- Google Workspace(IdP)にリダイレクトされ、認証が行われる
- Slack にリダイレクトされ、ログインが完了
Google Workspace の SSO
対応するアプリ
Google Workspace を IdP として利用すれば、多くのクラウドサービスで SAML 認証を使用したシングルサインオンを実現できます。
例えば、以下のようなサービスが「統合対応 SAML アプリ」としてネイティブに対応しています。
- Amazon Web Services
- Notion
- ServiceNow
- Tableau
- Zendesk
またネイティブに対応していないサービスでも、SAML 2.0 規格に準拠していれば、「カスタム SAML アプリ」として SSO 設定が可能です。
- 参考 : 統合対応 SAML アプリの一覧
- 参考 : カスタム SAML アプリを設定する
Google Workspace を IdP とするメリット
Google Workspace を IdP として利用することで、SSO の効果をさらに高める以下の利点があります。
Google アカウントの統一管理
Google アカウントを認証基盤として使用するため、複数のアカウントやパスワードを管理する必要がなくなり、ユーザーの利便性が向上。セキュリティ強化
多要素認証(Google Authenticator やセキュリティキーの利用)やコンテキストアウェアアクセス(IP アドレスやデバイスによるアクセス制御)を活用し、企業のセキュリティ要件やリスク管理方針に応じた柔軟な認証ポリシーを設定可能。幅広いサービスとの連携
Google Workspace を通じて、Slack などの外部サービスだけでなく、Google Workspace 内部のサービス(Google Drive、Google Meet など)へのアクセスも一元管理。
2段階認証やコンテキストアウェア アクセスについては、以下の公式ドキュメントも参考にしてください。
対応エディション
Google Workspace では、Essentials Starter 以外の全エディションで、Google Workspace を IdP とした SSO を構成できます。
Cloud Identity でも同様に、Free と Premium の両エディションで、Cloud Identity を IdP とした SSO を構成できます。
検証の概要
以下の手順で SSO を設定し、動作を確認します。
順番 | 作業場所 | 作業名 | 内容 |
---|---|---|---|
1 | Google Workspace | カスタム SAML アプリの作成 | Google Workspace 側で SAML 認証を設定 |
2 | Google Workspace | カスタム SAML アプリのユーザー設定 | アプリを利用する対象(組織、グループ)を設定 |
3 | Slack | SAML 認証設定 | Slack 側で SAML 認証を設定 |
4 | Slack | Slack への直接アクセス確認 | Google Workspace にログインしていない状態で、SAML 認証が正しく動作するかを確認 |
5 | Google Workspace | Google Workspace アプリ経由の確認 | Google Workspace のカスタム SAML アプリを利用して、SSO が正しく設定されているかを確認 |
6 | Google Workspace | コンテキストアウェアアクセスの設定手順確認 | アクセス制限(IP アドレスやデバイス制御)の設定手順を確認 |
なお前提として、Slack では Business+ または Enterprise Grid プランでのみ、SAML ベースの SSO を利用できます。Free プランや Pro プランでは利用できませんのでご注意ください。
- 参考 : チームに合ったプランを選択しましょう
検証作業
[Google Workspace] カスタム SAML アプリの作成
Google Workspace の管理コンソール(https://admin.google.com)にログインします。
- 参考 : 管理コンソールにログインする
[アプリ] > [ウェブアプリとモバイルアプリ] > [アプリを追加] > [カスタム SAML アプリの追加] を選択します。
アプリ名を入力し、必要に応じてアイコンを添付します。入力が終わったら [続行] を選択します。
管理者は、Slack 側に登録するために以下の3点を控えておき、[続行] を選択します。
- SSO の URL
- エンティティ ID
- 証明書(右側のダウンロードアイコンを選択してダウンロードします)
以下を入力し、[続行] を選択します。
- ACS の URL:
https://${{Slack URL}}/sso/saml
- エンティティ ID:
https://slack.com
- 署名付き応答:有効化(チェックを入れる)
- 名前 ID:
[Basic Information] > [Primary email]
Slack URL は、以下のドキュメントを参照して確認してください。
[マップングを追加] から以下の通りに設定し、[完了] を選択します。
[Basic Information] > [Primary email]
:User.Email
[Basic Information] > [First name]
:first_name
[Basic Information] > [Last Name]
:last_name
[Google Workspace] カスタム SAML アプリのユーザー設定
作成したアプリの [ユーザー アクセス] を選択します。
SAML 認証を利用する対象(組織全体または特定の組織部門または Google グループ)を選択し、[オン] > [保存(またはオーバーライド)] を選択します。
[Slack] SAML 認証設定
管理者アカウントにて、[ワークスペース名] > [ツールと設定] > [ワークスペースの設定] を選択します。
[認証] > [認証] から SAML 認証の [設定する] を選択します。
以下の通りに設定し、詳細設定の [開く] を選択します。
- SAML 2.0 エンドポイント (HTTP):
SSO の URL
- ID プロバイダ発行者:
エンティティ ID
- 公開証明書:ダウンロードした証明書ファイルをテキストエディタで開き、その内容をコピーして貼り付けます。
以下を選択し、[設定を保存する] を選択します。
- サービスプロバイダ発行者:カスタム SAML アプリで設定した
エンティティ ID
- 署名付きレスポンス:有効化(チェックを入れる)
- ワークスペースの認証が必要なメンバー:SAML 認証が必要な対象を選択します。
SAML 認証が有効化されたことを確認します。
[Slack] Slack への直接アクセス確認
Google Workspace にログインしていない状態で、Slack の URL(例: https://${{Slack URL}}
)にアクセスします。
[SAML でサインイン] を選択します。
Google のログイン画面が表示されるため、アカウント及びパスワードを入力して [次へ] を選択します。
認証が完了すると Slack にリダイレクトされ、ログインできることを確認します。
[Google Workspace] Google Workspace アプリ経由の確認
Google Workspace にログインした状態で、[アプリ] > [カスタム SAML アプリ] を選択します。
Slack にログインできることを確認します。
Google Workspace の管理画面から、ログを確認する方法も検証します。
[レポート] > [監査と調査] > [SAML ログイベント] から SAML 認証に関するログを確認できます。
[Google Workspace] コンテキストアウェアアクセスの設定手順確認
[セキュリティ] > [アクセスとデータ管理] > [コンテキストアウェアアクセス] > [アプリにアクセスレベルを割り当てる] を選択します。
アクセスレベルを適用する対象として カスタム SAML アプリ を選択します。[割り当て] を選択することで、アクセスレベルを設定できます。
コンテキストアウェアアクセスの詳細な設定手順やアクセスレベルの作成方法については、以下の記事を参照してください。