クラウド初心者がOneLoginとSlackのSSO対応を実施した話
これはGMOペパボエンジニア Advent Calender 2023 12月8日の記事です。
前がき
こんにちは!GMOペパボのコーポレートエンジニアリンググループ IT支援チームで働くinatchi(いなっち)です。
前職で9年間ほど社内SEとしての経験を積み、この夏2023年8月1日にGMOペパボの仲間入りをしました。これまでのキャリアは主にITサポート、VBAによる簡単な業務アプリの作成、vb.netを使った社内システム開発、サーバーの保守・運用、IT資産管理など社内向け業務が中心でした。そんな私にとってSaaSやIDaaS、MDMといったクラウドベースの新しい技術に触れることは、ペパボに入社してこの4ヶ月間、本当に驚きの連続でした。今は新しい技術に触れる楽しさを感じつつ、日々の仕事に励んでいます。
今回はそんなクラウド初心者の私が「SlackのSSO対応」に挑戦し、一部失敗しながらも何とか完遂することができた話を皆さんに共有したいと思います。
対応の経緯
ペパボでは日常的な会話やプロジェクト管理、社外とのコラボレーションなど様々なコミュニケーションツールとしてSlackを使用しています。今年夏にセキュリティ向上のためにSlackのプランをアップグレードし、アップグレード項目の一つとしてSSOが可能になりましたので、ペパボで使用しているIDaaS「OneLogin」とSlackのSSO対応に取り組むことになりました。
OneLoginとSlackの連携方法については色々な方が記事を書かれていましたので、今回はこちらの記事を参考に設定を進めました。設定の詳細は参考記事を見ていただくとして、自分が引っかかった部分や調査したこと、学びについて記載していきます。
そもそもSSOって?
SSO(シングルサインオン)は「一度のユーザー認証で複数のシステムへのアクセスが可能になる仕組み」のことです。
企業が利用するサービスが増えるのに合わせて、ユーザーは多数のパスワードを管理する必要が生じ、結果として管理が容易な弱いパスワードを設定しがちになりセキュリティリスクが高まりますが、IDaaS(アイデンティティー・アズ・ア・サービス)を使用することでログイン情報を一元化でき、ユーザーの管理負担を軽減することができます。またこの一元化されたログイン情報に強力なセキュリティ対策を施すことで、全体的なセキュリティ向上も期待できます。
OneLogin側の設定
最初にOneLogin側にSlackのAppを作成します。作成後、App管理画面でSlackと連携させるパラメータを設定する必要があり、下記5つが必須パラメータになっています。
上図の「Fileld」の列がOneLogin側の項目で、「Value」の列がSlack側の項目です。OneLogin側の「NameID (Subject)」がSlackとのSAML認証に使用され、他の項目はプロビジョニングに使用されますと記載がありましたが、そもそもこの「SAML」と「プロビジョニング」の意味がわからなかったので調べました。ざっくり以下説明します。
SAMLは「Security Assertion Markup Language」の略称で、SSOを実現するための認証方式の一つです。SSOの認証方式は他にエージェント方式、代理認証方式などもありますが、OneLoginとSlackはSAML認証を採用しています。
プロビジョニングは「対象サービスでアカウントを準備し、ユーザーが利用できる状態にする」ことを指します。今回はSlack側に既にアカウントがある状態だったのでこのパラメータはあまり気にしませんでした…が、これが後で問題になります。
Slack側の設定
さすがに本番環境で検証はできないので、検証環境が準備できないかSlack に相談したところ、下記手順で検証可能との回答をもらいました。Slackのサポートは半日以内の返信速度、丁寧で寄り添った回答と安心感が素晴らしいです。
フリープランのワークスペースを作成する
上記に30日間のビジネスプランの無料トライアルを付与してもらう
ビジネスプランはSSO設定可能なので、無料トライアル期間は検証可能
検証環境を準備し参考サイトに沿って進めたところ、特に詰まることもなくOneLogin経由でSlackにログインができました。切り替え時に現在ログインしているユーザーが強制的にログアウトされたりするかと思いましたが、Slackの公式サイトに以下記載がある通り大丈夫でした。
またプロジェクトによっては一時的にゲストアカウントが必要になるため、上記対応として認証範囲は下記にしました。
あとは本番環境に設定・反映すれば問題なしと判断し、全社に反映日を周知し数日後に反映しました…が、一部問題が発生しました。
反映、問題発生
反映日の翌日、同じチームの方から「いなっち、Slackの表示名変えたの?」とメッセージが届き急いで確認したところ、自分の表示名が「苗字 名前 LastName FirstName (あだ名)/GMO-PB」から「名前 苗字」に変わっていました。タイミング的にSSO対応しかないと思い設定を見返したところ、Slack側の設定で「ユーザーがログインするたびにプロフィールを更新する」にチェックを入れていたことが要因でした。
上記チェック下に書いてある「ユーザーがログインするたびに、利用可能なユーザープロフィールのフィールドがお使いのIDプロバイダから同期されます」の通り、OneLoginから渡していたFirst NameとLast Nameがログイン時に同期、反映されていました。このままだとSSOした方の名前が変更されてしまうため急ぎ上長に相談、変更対応いただき、SSO検証して問題がないことを確認、全体に周知することで何とか解決することができました。
要因と再発防止策
今回OneLoginからSlackに渡すパラメータはSAML認証で使用される「NameID (Subject)」しか気にしていなかったこと、また件のSlack側の設定で「ユーザーがログインするたびに、利用可能なユーザープロフィールのフィールドがお使いのIDプロバイダから同期されます」と記載があるにも関わらず、必須パラメータで渡している値が同期される可能性を見落とし検証していなかったことが要因でした。
今思えば、ゴール(実装)が見えて気が緩み、検証対応が甘くなっていたなと反省しています…。自分はゴールが見えると気が緩みがちなので、今後は実装をゴールにするのではなく、効果検証など更に先を設定することで緩みを防止します。
最後に
私の検証不足による問題はありましたが、チームメンバーや技術部の方など多くの方からご助言、ご協力をいただいたおかげで、最終的に安定稼働の状態にできました。不慣れな自分に仕事を任せていただき、本当に感謝しかありません。
今回の対応を通してSSOの勘所が掴めた(気がする)ので、社内で未対応のSaaSについても主体的にSSO対応を進めていこうと思います。またIDaaSやSaaSなどクラウドサービスについても知見を広げられ、その連携を考えることは非常に面白い経験でした。
引き続き興味のアンテナと知見を広げつつ、楽しみながら「より働きやすく生産性の高い環境」を提案・構築することで、会社と自分の可能性を更に広げていきます。
この記事が気に入ったらサポートをしてみませんか?