6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OCIへのログインにIDCS(SP)を介したAzureAD(IdP)ユーザで認証を行う

Last updated at Posted at 2021-01-10

#はじめに

この記事は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側のユーザでログインしても良いです。

image.png

この手順では、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は正しく理解できていないので、矢印や説明には矛盾があるかもしれません、コメント欄でご教授いただけると幸いです)

image.png

#手順概要

手順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として登録

Azureにログインし、AzureADコンソールを開く
image.png

「エンタープライズアプリケーション」を選択
image.png

「すべてのアプリケーション」-「新しいアプリケーション」を選択
image.png

Oracleを選択
image.png

Oracle Cloud Infrastructureを選択
image.png

そのまま作成ボタンを押下
image.png

以下が開くので「シングルサインオン」を選択
表示された右側の画面で「ユーザー属性とクレーム」を編集
image.png

「名前識別子の形式の選択」を「永続的」に変更して保存する
参考:https://docs.microsoft.com/ja-jp/azure/active-directory/saas-apps/oracle-cloud-tutorial
image.pngimage.png

「グループ要求を追加する」を押下
右画面で設定
「セキュリティグループ」
ソース属性:「グループID」
カスタマイズ 名前:「groupName」
名前空間: 「https://auth.oraclecloud.com/saml/claims」
を入力して保存
image.png

フェデレーション メタデータ XMLをダウンロードする
→ Oracle Cloud Infrastructure Console.xml がダウンロードされる
image.png

2. IDCSでAzureADをIdPとして登録

IDCSの管理コンソールにログインする
https://<環境固有>.identity.oraclecloud.com/ui/v1/adminconsole

「セキュリティ」-「アイデンティティ・プロバイダ」 「SAML IDPの追加」を選択
image.png

名前やアイコンは任意
image.png

AzureADでダウンロードした Oracle Cloud Infrastructure Console.xml をアップロードして次へ
image.png

以下が表示される
リクエストされたNameID形式はを「<リクエストなし>」から「永続」に変更する
→ AzureADユーザで必ず一意になるプリンシパルユーザ名と、IDCSユーザのプライマリメールアドレスとで、紐づけを行うということ

image.png

この画面でIDCSの「サービス・プロバイダ・メタデータ」ダウンロードする
Metadata.xml がダウンロードされる。
image.png

ここでテストしてもNGなので、一旦「終了」押下
image.png

3. IDCSの認証ポリシー設定

「セキュリティ」-「IdPポリシー」
「Default Identity Provider Policy」を選択
中の設定で、「アイデンティティ・プロバイダ・ルール」タブの
「Default IdP Rule」を編集

image.png

Azureを追加
image.png

「セキュリティ」-「アイデンティティ・プロバイダ」
Azureを有効化する
image.png

4. AzureADでIDCS情報の追加設定

AzureADコンソールを開く
「エンタープライズアプリケーション」-「Oracle Cloud Infrastructure」-「シングルサインオン」 を選択
「メタデータファイルをアップロードする」で、IDCSでダウンロードした Metadata.xml をアップロードする
その後、「基本的なSAML構成」を編集
image.png

サインオンURLだけ値が入らないため、応答URLと同じものを入れ、保存する
image.png

テストするか表示が出たら、スキップ
image.png

5. AzureADのユーザ作成

「AzureAD」-「ユーザ」を選択
image.png

「新しいユーザー」を選択
image.png

例では「oper1」アカウントを作成
image.png

作成後、 「ユーザー プリンシパル名」のメールアドレスを控えておく (IDCS側ユーザのメールアドレスと一致させる)
image.png

次にグループを作成し、先ほどのアカウントをメンバとして追加しておく
名前は任意。ここでは「OCI_Administrators」というグループにしている
image.png

グループに先ほど作成したユーザを追加
image.png

次にAzureAD 「エンタープライズアプリケーション」-「Oracle Cloud Infrastructure」-「ユーザとグループ」を開き
AzureADからIDCSにフェデレーションするユーザもしくはグループを追加する
今回は「OCI_Administrators」グループを追加
image.png

6. IDCSのユーザ作成

「グループ」を選択
名前は任意。ここでは「Azure_Users」というグループを作成した
image.png

グループに対してアクセス許可「OCI-V2-<テナント>名」を割り当てる
image.png

次にユーザを作成
「ユーザ」ー「追加」
image.png

姓は任意
ユーザ名は、AzureADのユーザー プリンシパル名と同一にする
(AzureADと別の名前にする場合は、「ユーザ名として電子メール・アドレスを使用」のチェックを外し、ユーザ名と電子メールアドレスを別々に指定する)

image.png

先ほど作成したグループ「Azure_Users」に追加する
image.png

作成したユーザ情報を開く
ユーザ名がAzureADのユーザプリンシパル名と同一であることを確認
また、「フェデレーテッド」を「はい」に変更する
※デフォルトの「いいえ」のままの場合、AzureADとIDCS、いずれでもログイン(認証)ができる状態

image.png

確認:所属グループ
image.png

確認:アクセス権(グループに割り当たったものが下りてきている為、グレーアウトしている)
image.png

7. OCI IAMの設定

OCI側のコンソールにサインインし、IAMを設定していく
「アイデンティティ」-「グループ」を開く
任意の名前でグループを作成する
今回は「Azure_Users_Audit」というグループを作成

image.png

「アイデンティティ」-「ポリシー」を開く
ここでは、作成したグループにネットワークだけを管理できる権限を付与している
image.png

「アイデンティティ」-「フェデレーション」を開く
右画面の「OracleIdentityCloudService」リンクを押下
image.png

「グループ・マッピング」の「マッピングの追加」を押下
image.png

IDCSの「Azure_Users」グループと、IAMの「Azure_Users_Audit」グループをマッピングする
image.png

マッピング追加後
image.png

※IAM側はユーザを作成しなくてよい

8. OCIへのサインインテスト

OCIにログインする
https://cloud.oracle.com/?tenant=nicaregi

以下では、IDCS側でログインするように左側「Continue」を押下
image.png

IDCSのサインイン画面が表示される
ここではユーザ名は入力せず、下部に表示される「Azure」を押下
image.png

AzureADのユーザ名、パスワードを入力
(AzureAD側でMFAなどを有効化すれば、その旨が問われる)
image.png

OCIにサインインできた画面
OCI(IAM)からすると、IDCSユーザでサインインしている
image.png

9. 動作確認:認可範囲

ネットワークは管理できる
image.png

コンピュートは管理できない
→ 意図したポリシーが適用されている事が確認できた
image.png

10. 動作確認: AzureADユーザでOCIを利用しても、APIキーが利用できる事がわかる (2021/11/09追記)

image.png

以上

Appendix

IDCSユーザでログインしようとするとできない

image.png

参考資料

チュートリアル: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

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?