#はじめに
この記事はOracle Cloud Infrastructure (以後、OCI)のコンロールへのログインの際に、Azure Active Directory(以後、AzureAD)のユーザ情報で認証させる手順になります。
-
なぜそんな事するの?
- 認証基盤を統一すると、ユーザ管理をシンプルに、セキュリティを強固にしても運用がしやすくなります
-
デフォルトのOCIのIDCS使えばいいのでは?
- AzureADはAzureやMicrosoft365(旧名:Office365)など、以前から利用者が多く、また、オンプレミス環境のActive Directoryと連携して既にIDがAzureADに統合されているケースが多い為、OCIのログインにもAzureADを認証に利用します
-
OCI IAMと他のIDaaS直接フェデレーションさせればいいんじゃない? (2021/11/09追記)
- IAMとフェデレーションさせるだけであれば可能ですが、IAMにユーザはプロビジョニングされない為、APIキーや認証トークンの機能を利用するためにはSCIMプロビジョニングも必要になります。それに対応しているのはIDCSとOktaのみです
OCIの前提知識と本手順のゴールイメージ
OCIを契約するとデフォルトで、OCI側のIAMと、AzureADと同様機能をもつIDaaS製品のOracle Identity Cloud Service(以後、IDCS)の2種類の認証方法が用意されています。
デフォルトはIAMで直接OCIにログインしても良し、IDCSをIdentity Provider(以後、IdP)としたSAML連携でIDCS側のユーザでログインしても良いです。
この手順では、IDCSをService Provider(以後、SP)として、AzureADをIdPとして構成し、AzureADユーザでシングルサインオン(以後、SSO)させます。
-
なぜIAMとAzureADをSAML連携しないの?
- IAMとAzureADを直接認証連携可能ですが、2021年1月現在ではSCIMによるプロビジョニングができない為、直接フェデレーションしたIAMユーザアカウントではAPIキーを設定できない制限があります
-
追加費用はかかる?
- AzureADもIDCSも、デフォルトの無償のまま構成することが可能です。
- IdP側は無償なのと、今回はSPとなるIDCSでは、1つのIdP登録までは無償のFoundationモデルで可能です。
- IDCSドキュメント: 1か月当たりのユーザー価格設定モデルの理解
【ゴール・イメージ】
AzureADのユーザ名とパスワードを入力して認証が通ると、IDCS-IAM で構成した認可設定によって、OCIコンソールにサインインしてOCIの管理が可能となります。
(※SAMLやSCIMは正しく理解できていないので、矢印や説明には矛盾があるかもしれません、コメント欄でご教授いただけると幸いです)
#手順概要
手順No | AzureADでの作業 | IDCSおよびOCIでの作業 |
---|---|---|
1 | AzureADでIDCSをSPとして登録 | |
2 | IDCSでAzureADをIdPとして登録 | |
3 | IDCSの認証ポリシー設定 | |
4 | AzureADでIDCS情報の追加設定 | |
5 | AzureADのユーザ作成 | |
6 | IDCSのユーザ作成 | |
7 | OCI IAMの設定 |
#手順
1. AzureADでIDCSをSPとして登録
「すべてのアプリケーション」-「新しいアプリケーション」を選択
Oracle Cloud Infrastructureを選択
以下が開くので「シングルサインオン」を選択
表示された右側の画面で「ユーザー属性とクレーム」を編集
「名前識別子の形式の選択」を「永続的」に変更して保存する
参考:https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/oracle-cloud-tutorial
「グループ要求を追加する」を押下
右画面で設定
「セキュリティグループ」
ソース属性:「グループID」
カスタマイズ 名前:「groupName」
名前空間: 「https://auth.oraclecloud.com/saml/claims」
を入力して保存
フェデレーション メタデータ XMLをダウンロードする
→ Oracle Cloud Infrastructure Console.xml がダウンロードされる
2. IDCSでAzureADをIdPとして登録
IDCSの管理コンソールにログインする
https://<環境固有>.identity.oraclecloud.com/ui/v1/adminconsole
「セキュリティ」-「アイデンティティ・プロバイダ」 「SAML IDPの追加」を選択
AzureADでダウンロードした Oracle Cloud Infrastructure Console.xml をアップロードして次へ
以下が表示される
リクエストされたNameID形式はを「<リクエストなし>」から「永続」に変更する
→ AzureADユーザで必ず一意になるプリンシパルユーザ名と、IDCSユーザのプライマリメールアドレスとで、紐づけを行うということ
この画面でIDCSの「サービス・プロバイダ・メタデータ」ダウンロードする
→ Metadata.xml がダウンロードされる。
3. IDCSの認証ポリシー設定
「セキュリティ」-「IdPポリシー」
「Default Identity Provider Policy」を選択
中の設定で、「アイデンティティ・プロバイダ・ルール」タブの
「Default IdP Rule」を編集
「セキュリティ」-「アイデンティティ・プロバイダ」
Azureを有効化する
4. AzureADでIDCS情報の追加設定
AzureADコンソールを開く
「エンタープライズアプリケーション」-「Oracle Cloud Infrastructure」-「シングルサインオン」 を選択
「メタデータファイルをアップロードする」で、IDCSでダウンロードした Metadata.xml をアップロードする
その後、「基本的なSAML構成」を編集
サインオンURLだけ値が入らないため、応答URLと同じものを入れ、保存する
5. AzureADのユーザ作成
作成後、 「ユーザー プリンシパル名」のメールアドレスを控えておく (IDCS側ユーザのメールアドレスと一致させる)
次にグループを作成し、先ほどのアカウントをメンバとして追加しておく
名前は任意。ここでは「OCI_Administrators」というグループにしている
次にAzureAD 「エンタープライズアプリケーション」-「Oracle Cloud Infrastructure」-「ユーザとグループ」を開き
AzureADからIDCSにフェデレーションするユーザもしくはグループを追加する
今回は「OCI_Administrators」グループを追加
6. IDCSのユーザ作成
「グループ」を選択
名前は任意。ここでは「Azure_Users」というグループを作成した
グループに対してアクセス許可「OCI-V2-<テナント>名」を割り当てる
姓は任意
ユーザ名は、AzureADのユーザー プリンシパル名と同一にする
(AzureADと別の名前にする場合は、「ユーザ名として電子メール・アドレスを使用」のチェックを外し、ユーザ名と電子メールアドレスを別々に指定する)
作成したユーザ情報を開く
ユーザ名がAzureADのユーザプリンシパル名と同一であることを確認
また、「フェデレーテッド」を「はい」に変更する
※デフォルトの「いいえ」のままの場合、AzureADとIDCS、いずれでもログイン(認証)ができる状態
確認:アクセス権(グループに割り当たったものが下りてきている為、グレーアウトしている)
7. OCI IAMの設定
OCI側のコンソールにサインインし、IAMを設定していく
「アイデンティティ」-「グループ」を開く
任意の名前でグループを作成する
今回は「Azure_Users_Audit」というグループを作成
「アイデンティティ」-「ポリシー」を開く
ここでは、作成したグループにネットワークだけを管理できる権限を付与している
「アイデンティティ」-「フェデレーション」を開く
右画面の「OracleIdentityCloudService」リンクを押下
IDCSの「Azure_Users」グループと、IAMの「Azure_Users_Audit」グループをマッピングする
※IAM側はユーザを作成しなくてよい
8. OCIへのサインインテスト
OCIにログインする
https://cloud.oracle.com/?tenant=nicaregi
以下では、IDCS側でログインするように左側「Continue」を押下
IDCSのサインイン画面が表示される
ここではユーザ名は入力せず、下部に表示される「Azure」を押下
AzureADのユーザ名、パスワードを入力
(AzureAD側でMFAなどを有効化すれば、その旨が問われる)
OCIにサインインできた画面
OCI(IAM)からすると、IDCSユーザでサインインしている
9. 動作確認:認可範囲
コンピュートは管理できない
→ 意図したポリシーが適用されている事が確認できた
10. 動作確認: AzureADユーザでOCIを利用しても、APIキーが利用できる事がわかる (2021/11/09追記)
以上
Appendix
IDCSユーザでログインしようとするとできない
参考資料
チュートリアル:Oracle Cloud Infrastructure Console と Azure Active Directory を統合する
https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/oracle-cloud-tutorial
Microsoft Azure Active Directoryのフェデレート
https://docs.oracle.com/ja-jp/iaas/Content/Identity/Tasks/federatingADFSazure.htm
Oracle Identity Cloud Serviceを使用したOracle Cloud Infrastructure (OCI)コンソールの提供
https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/federatingIDCS.htm
IDCSチュートリアル
https://docs.oracle.com/cd/E83857_01/paas/identity-cloud/tutorials.html