はじめに
前回はIAM Identity Centerに外部AWSアカウントへのSAML認証による接続を行いました。
今回は、GitHubへSAML認証による接続を行ってみようと思います。
- 【前】IAM Identity Centerを使って複数アカウント管理する。(その3:外部AWSアカウントへのSAML)
- 【次】AWS Client VPNの認証をIAM Identity Centerと連携させる。
前提条件
GitHubでSAML認証を使用するためには、GitHub Organizationを使用しており、かつGitHub Enterprise Cloud(GHEC)を使用している必要があります。
つまり、GitHubの料金体系で言うと、最上位のEnterpriseを使用しており、Organizationを構成している必要があります。
そのため、残念ながら個人用途のフリープランやTeamプランでは使用することができません。
もし導入前に検証等行いたい場合は、Enterpriseのトライアルを利用することでEnterpriseの機能を確認することも可能なため、Enterpriseの契約前に無料のトライアルを申し込むことをおすすめします。
※今回の記事もトライアルを申し込んで検証しました。
また、GitHubでSAMLを使用する場合、Organization(組織)とEnterprise(企業)の認証においてSAMLを利用することができますが、今回はOrganizationの認証にSAMLを使用する前提で進めます。
接続構成
以下より設定手順を紹介していきますが、GitHubはEnterpriseプランを利用してすでにOrganizationの構成ができている前提で進めます。
前回外部AWSアカウントに接続する際の設定では、自組織、外部組織と分けて設定していきましたが、今回は外部組織側がGitHubになります。
自組織側でやる設定の大まかな流れは変わらず、前回と同様、外部組織(今回はGitHub)接続用のアプリケーションを作成して接続するための設定を行う流れとなります。
構成のイメージがしやすいよう前回と内容を合わせるため、今回も自組織がIAM Identity Center、外部組織がGitHubとして紹介していきます。
SAMLメタデータの取得(外部組織)
前回の内容で言うと、自組織側のアプリケーション追加時に設定した「アプリケーションメタデータ」の「アプリケーションACS URL」と「アプリケーションSAML対象者」にあたるSPメタデータを先にダウンロードしておきます。
メタデータのURLは「https://github.com/orgs/ORGANIZATION/saml/metadata」(ORGANIZATIONは自分のOrganization名)となるため、上記URLにアクセスし、表示されたXMLをページ保存等でダウンロードしておきます。
アプリケーションの追加(自組織)
IAM Identity Centerに外部組織用のアプリケーションを追加するため、「IAM Identity Center」→「アプリケーション割り当て」→「アプリケーション」から「アプリケーションを追加」を選択して設定していきます。
「カスタムアプリケーション」と「事前統合アプリケーション」があるので、「事前統合アプリケーション」から「GitHub」を選択して「次」に進みます。
※執筆時、英語表記となってしまったため英語表記のまま進めます。実際に設定する場合は適宜読み替えてください。
今回はGitHub側に登録するURL等確認する必要があるので、「View step-by-step instructions」を選択。
別ウィンドウでセットアップ手順が書かれた以下のようなページが開くため、開いたままにしておき、元のウィンドウの「IAM Identity Center metadata」より「IAM Identity Center Certificate」をダウンロードしておきます。(※別ウィンドウでも同じIAM Identity Center証明書がダウンロードできます)
「Configure application」(ディスプレイ名等)は任意で入力、「Application properties」はそのまま空欄とし、「Application metadata」で「Upload application SAML metadata file」を選択し、先程事前にダウンロードしたGitHubのSPメタデータを選択して「Submit」します。
「Assign Users」を選択して、外部組織にアクセスさせたいユーザ・グループを選択します。
SAMLの有効化(外部組織)
GitHubでOrganizationのSAML設定が可能なユーザでログインし、右上のユーザアイコンから「Your organizations」より自組織の「Settings」を選択。
左メニューの「Authentication security」に「SAML single sign-on」の項目があり、「Enable SAML authentication」のチェックを付けると以下のような設定項目が表示されるため、先程のIAM Identity Centerの設定時に別ウィンドウで開いたセットアップ手順に記載されている「Single sign-on URL」と「Issuer」を入力、「Public certificate」には、先程ダウンロードした「IAM Identity Center Certificate」の内容をコピペします。
また、鉛筆アイコンより「RSA-SHA256」、「SHA256」を指定しておきます。
| 項目 | 設定 |
|---|---|
| Sign on URL | ステップバイステップ手順のSingle sign-on URL |
| Issuer | ステップバイステップ手順のIssuer |
| Public certificate | IAM Identity Centerの証明書 |
| Signature Method | RSA-SHA256 |
| Digest Method | SHA256 |
全て設定できたら「Test SAML configuration」を選択することで、接続テストが行われます。
初回はIAM Identity Center、GitHubのユーザ情報入力が求められるかと思うので、無事IAM Identity CenterのSAMLでログインできれば、以下のように無事テストが成功した画面となるため、最後に「Save」して終了です。
属性マッピングの設定(自組織)
前回は属性マッピングの設定も手動で行いましたが、GitHubの場合は特に変更する必要が無いため、設定は行いません。
ちなみに、デフォルトでは以下のようなアトリビュートが設定されます。
| User attribute in the application | Maps to this string value or user attribute in IAM Identity Center | Format |
|---|---|---|
| Subject | ${user:email} | unspecified |
| ${user:email} | unspecified |
IAM Identity Centerからのログイン(自組織)
上記までの手順を実施することで、IAM Identity Centerのポータル画面にGitHubへログインするためのアプリケーションが表示されるようになっているため、表示されているアプリケーションを選択することでGitHubにログインできるようになります。
おわりに
GitHubの場合、Enterpriseでないといけなかったりする条件はありますが、基本的にはIAM Identity Centerの設定画面から確認できるステップバイステップの手順を見ればすんなり設定できるかと思います。
ただし、ステップバイステップの手順に書かれている「IdP Initiated SSO」の設定がGitHubの画面では見つからなかったり、手順通りに進めるとIAM Identity CenterとGitHubを行ったり来たりする必要があったりするため、今回紹介した流れで設定したほうが良いと思います。
また、GitHub側の認証を一度通せばIAM Identity Centerから直接GitHubへ接続できるようになりますが、GitHub側でログアウトすると、再度SAML接続した際、GitHub側のユーザ、パスワードの入力は求められてしまうようです。(ドキュメントが見つけられませんでしたが、もしかしたら設定次第でどうにかなるかも?)
GitHub側の設定でOrganizationに所属のメンバー全員にSAML認証を要求することもできるため、GitHubの認証とIAM Identity Centerの認証をSAMLにまとめたいといった場合は今回の手順を参考にしてもらえればと思います。











