はじめに
前回は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
にまとめたいといった場合は今回の手順を参考にしてもらえればと思います。