8 EDQとAzure Active Directoryの統合
この章では、Azure Active Directory (AD)をOracle Enterprise Data Quality (EDQ)と統合する方法について説明します。
この章の内容は次のとおりです。
- Azure ADでのEDQアプリケーションの登録
EDQは、アイデンティティ・ストアとしてAzure ADと統合できます。ユーザーおよびグループの問合せでMicrosoft Graph v1.0 REST APIを使用してAzure ADのデータにアクセスできるように、Azure ADでEDQアプリケーションを登録する必要があります。 - アプリケーションでのOpenID Connect SSOの有効化
OpenID Connectを使用してSSOを有効にするには、EDQサーバーへのリダイレクトURIを構成する必要があります。単一のアプリケーション登録で複数のサーバーをサポートできるように、追加のEDQサーバーのリダイレクトURIを追加できます。 - OpenID認証での複数のURIリダイレクトの有効化
OpenID統合フレームワークはEDQ 12.2.1.4.3で拡張され、受信ホスト名に基づく複数のリダイレクトURIを構成できるようになります。そのため、ロード・バランサを通じた、またはロード・バランサの背後にある特定のホストへのログインが可能になります。 - EDQ login.propertiesファイルの編集
EDQでのユーザー認証は、EDQ構成領域のsecurity/login.propertiesというファイルを使用して構成されます。このファイルは「ローカル」構成で作成する必要があります。この場所にディレクトリ"security"が存在しない場合は、手動で作成する必要があります。login.propertiesを編集し、Azure ADのレルムを定義する必要があります。 - Webサービスに対するOAuth2 Bearer認証の有効化
Azure ADでの認証は、OpenID ConnectやSAMLなどのSSOメカニズムに基づいています。ユーザー名とパスワードを使用したプログラムによる認証はサポートされていません。
Azure ADでのEDQアプリケーションの登録
EDQは、アイデンティティ・ストアとしてAzure ADと統合できます。ユーザーおよびグループの問合せでMicrosoft Graph v1.0 REST APIを使用してAzure ADのデータにアクセスできるように、Azure ADでEDQアプリケーションを登録する必要があります。
アプリケーションでのOpenID Connect SSOの有効化
OpenID Connectを使用してSSOを有効にするには、EDQサーバーへのリダイレクトURIを構成する必要があります。単一のアプリケーション登録で複数のサーバーをサポートできるように、追加のEDQサーバーのリダイレクトURIを追加できます。
OpenID Connectを使用してSSOを有効にするには:
OpenID認証の複数のURIリダイレクトの有効化
OpenID統合フレームワークはEDQ 12.2.1.4.3で拡張され、受信ホスト名に基づく複数のリダイレクトURIを構成できるようになります。そのため、ロード・バランサを通じた、またはロード・バランサの背後にある特定のホストへのログインが可能になります。
EDQインスタンスへのログインは、次の方法で設定できます。
- 自動URIの使用: login.propertiesのリダイレクトURLをautoに設定します。この場合、URLはHTTPリクエストから
https://HOST/edq/oidc/callback
として導出されます。たとえば、ユーザーが
https://lb.example.com/edq/
を参照する場合、リダイレクトURIはhttps://lb.example.com/edq/oidc/callback
として構築されます。ユーザーがhttps://instance1.example.com/edq/
を参照する場合、リダイレクトURIはhttps://instance1.example.com/edq/oidc/callback
として構築されます。ホスト名は、X-Forwarded-Host HTTPヘッダーを読み取って導出されます。X-Forwarded-Hostが存在しない場合は、Hostヘッダーが使用されます。 - ホストからURIへのマッピングの使用: login.propertiesで、ホスト名からURIへのマップを定義します。この場合、ホスト名が各マッピングと比較され、最初の一致が使用されます。特殊な値 autoに加えて、noneを使用して、リダイレクションされないように指定できます。その場合、EDQ Launchpadおよびその他のアプリケーションへの通常の内部ログインが可能になります。より詳細に制御するには、先頭に~を付けてホスト名で正規表現を使用できます。一致がない場合は、デフォルトのリダイレクトURIが使用されます。
たとえば、次のようになります。
azure.extra.oidc.redirect_map = localhost -> none, \ testhost -> none, \ myalias -> https://lb.example.com/edq/oidc/callback, ~host\\d+\.example\.com -> auto
この例の説明:
https://localhost/edq/
またはhttps://testhost/edq/
への参照はリダイレクトされず、直接ログイン・アクセスが付与されません。https://myalias/edq/
への参照では、ロード・バランサのリダイレクトが使用されます。-
https://host23.example.com/edq/
への参照は、https://host23.example.com/edq/oidc/callback
にリダイレクトされます。
EDQ login.propertiesファイルの編集
EDQでのユーザー認証は、EDQ構成領域のsecurity/login.propertiesというファイルを使用して構成されます。このファイルは「ローカル」構成で作成する必要があります。この場所にディレクトリ"security"が存在しない場合は、手動で作成する必要があります。login.propertiesを編集し、Azure ADのレルムを定義する必要があります。
- EDQがHTTPS接続をサポートしていることを確認してください。
- Marketplaceイメージは、Apache HTTPDフロント・エンドにSSLを実装するため、これ以上のアクションは必要ありません。
- Webフロント・エンドを使用せずにEDQに接続する場合は、アプリケーション・サーバーでHTTPSを構成する必要があります。
詳細は、WebLogicまたはTomcatのドキュメントを参照してください。
login.propertiesを次のように設定します。
# Realms
realms = azure
# yourdomain.com users and groups at Azure AD
azure.realm = yourdomain.com
azure.label = Azure AD
azure.type = azure
azure.clientid = clientid
azure.clientsecret = clientsecret
azure.tenant = tenant ID
azure.proxy = <proxy server>:port
azure.prof.groupfilter = startsWith(displayName, 'edq-')
azure.prof.userdisplayname = userName
azure.prof.defaultusergroup = edq-users
azure.extra.oidc = true
azure.extra.oidc.redirect_uri = https://server/edq/oidc/callback
azure.xgmap = edq-admins -> Administrators
-
- realmは、Azure ADインスタンスのカスタム・ドメインです。
- tenantは、AzureテナントIDです。
- clientidおよびclientsecretは、Azure ADアプリケーションの値です。
- proxyは、EDQサーバーからインターネットへのアクセスに必要なプロキシ・サーバーのホストおよびポートです。プロキシが不要な場合、この設定は省略します。
- groupfilterは、EDQで使用するグループを選択する、Microsoft Graphの$filter式です。例に示されている値は、名前が
edq-
で始まるすべてのグループを返します。フィルタリングの詳細は、Microsoftのドキュメントを参照してください。すべてのグループを表示する場合は、この設定を省略します。 - defaultusergroupは、EDQを使用するユーザーを含むグループの名前です。ここでは、例としてグループ
edq-users
が使用されています。 - extra.oidc.redirect_uriは、Azure ADアプリケーションに入力されるリダイレクトURIです。URIは正確に一致する必要があります。
- xgmapは、管理ログインに必要なブートストラップ・グループ・マッピングです。この例の場合、Azureグループ
edq-admins
はEDQ管理者グループにマップされます。EDQコンソールで他のグループ・マッピングを設定できます。
サーバーを再起動すると、EDQ Launchpadへの参照はMicrosoftログイン・ページにリダイレクトされます。
Webサービスに対するOAuth2 Bearer認証の有効化
Azure ADでの認証は、OpenID ConnectやSAMLなどのSSOメカニズムに基づいています。ユーザー名とパスワードを使用したプログラムによる認証はサポートされていません。
- EDQ WebサービスのコールのBasic認証。
- JMX接続の認証。
- EDQ LaunchpadまたはJavaアプリケーションへの明示的なログイン。
- 組込みSSH (SFTP/SCP)サーバーへの接続
EDQへのJMX (JConsole、JMXTools)接続を引き続き使用する場合、login.propertiesで「内部」レルムを有効にすることをお薦めします。
realms = internal, azure
そのうえで、JMX認証には「dnadmin」などの内部ユーザーを使用します。
Azure ADによるWebサービス認証の場合、EDQはOAuth2 Bearerアクセス・トークンを使用した認証をサポートします。コール側は、クライアント資格証明または認可コード・フローを使用してアクセス・トークンを取得し、それを認可ヘッダーでEDQに渡します。たとえば、次のようになります。
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNa ......
認可コード・フローから取得したユーザー資格証明は、通常のログインと同じ方法でユーザー・アイデンティティを使用してマップされます。
アクセス・トークンおよびトークン検証の詳細は、Azureのドキュメントを参照してください。
次の項で説明するように、クライアント資格証明はアプリケーション・ロールを使用してマップされます。
Azure ADでのクライアント・アプリケーションの作成
アプリケーションを作成するには、次のステップを実行します。
ロールをマップするためのEDQ login.propertiesファイルの編集
login.propertiesに設定を追加して、アクセス・トークンのオーディエンスおよび発行元の要求を確認し、rolemap設定を追加してアプリケーション・ロールをEDQグループにマップします。login.propertiesに次の内容を追加します。
azure.extra.oauth2.token.aud = api://edq
azure.extra.oauth2.token.iss = https://sts.windows.net/TENANTID/
azure.extra.oauth2.rolemap = administration -> Administrators, callers -> Data Stewards
rolemap
の設定例では、管理ロールをEDQ管理者グループにマップし、コール元ロールをEDQデータ・スチュワード・グループにマップします。EDQでのアプリケーション認可にグループを使用している場合、ロールマップ設定は不要です。
EDQでのアプリケーション表示の構成
OAuth2を使用してEDQサービスを呼び出すクライアント・アプリケーションには、標準ユーザーと同じ方法で内部「ユーザー」IDが割り当てられます。ケース管理など、ユーザーの更新に関する履歴情報が表示されるアプリケーションでは、アプリケーションは「アプリケーション: NAME」として表示されます。NAMEはAzure ADのアプリケーションの表示名です。表示形式は、login.propertiesのappusername
プロファイル・プロパティを使用して構成できます。
azure.prof.appusername = OAuth2 application: {0}
プロパティでは、値{0}がアプリケーション名で置き換えられます。
アプリケーション名の表示を有効にするために、Azure ADから取得したユーザーのリストが、アプリケーションの問合せで拡張されます。問合せには、servicePrincipals APIリストが使用されます。デフォルトでは、EDQのクライアント・コールを行ったことがないアプリケーションは含まれません。アプリケーションがEDQに最初のコールを行う場合、その名前はケース管理ですぐには表示できません。これが問題の場合、すべてのアプリケーションが取得されるようにプロファイルshowallapps
プロパティを設定できます。
azure.prof.showallapps = true
appfilter
プロファイル・プロパティを使用して、アプリケーションを名前でフィルタできます。
azure.prof.appfilter = startsWith(displayName, 'Studio')
OAuth2クライアント・コールがインストールに使用されていない場合、appfilter
プロパティを特別な値'none'に設定することで、アプリケーション・リストを無効にできます。
azure.prof.appfilter = none
この場合、グラフのApplication.Read.All権限は必要ありません。