20 Oracle Identity Role Intelligenceのインストールおよび構成
Oracle Identity Role Intelligence (OIRI)は、Oracle Identity Governanceで定義されたユーザーおよびグループを使用して認証します。したがって、最初にOracle Identity Governanceをインストールして構成する必要があります。
「WDTを使用したOracle Identity Governanceの構成」を参照してください。従来のOracle Identity and Access Management製品とは異なり、Oracle Identity Role Intelligenceは一連のマイクロサービスとしてデプロイされます。
このリリースでは、Oracleはスタンドアロン・コンテナ・イメージを使用してOIRIをインストールおよび構成します。コンテナ・イメージは、Kubernetesクラスタ内で手動で起動されます。
この章の内容は次のとおりです。
- Oracle Identity Role Intelligenceについて
OIRIは、システム管理者がロール・マイニング操作を実行するために使用します。 - この章で使用される変数
この章の以降の各項では、様々なファイルを作成する手順を示します。これらのサンプル・ファイルには、デプロイメントに適用可能な値に置換する必要がある変数が含まれています。 - OIRIインストールの特徴
この項では、作成しようとしているOIRIインストールの主な特徴を示します。これらの特性を確認して、OIRIの構成に使用される手順の目的とコンテキストを理解します。 - Kubernetesサービス
NodePortサービスを使用している場合、OIRIインストールの一部としてKubernetesサービス'OIRI-nodeport
'および'OIRI-ui-nodeport
'が作成されます。イングレスを使用している場合は、イングレス・サービスが作成されます。 - 開始する前に
インストールを開始する前に、このトピックにリストされているすべての必須タスクが完了していることを確認する必要があります。 - 製品固有の作業ディレクトリの設定
インストールを開始する前に、Oracle Identity Governanceコンテナ・イメージおよびコード・リポジトリをダウンロードしてステージングしておく必要があります。 - Oracle Identity Governanceでのユーザー名とグループの作成
Oracle Identity Role Intelligenceは、Oracle Identity Governanceのユーザーおよびグループを使用して認証します。OIRIの構成を開始する前に、https://prov.example.com/identity
URLを使用してOIGセルフ・サービス・コンソールにログインし、必要なユーザー名とグループを作成します。 - OIGコンプライアンス・モードが有効であることの確認
OIRIが機能するには、OIGのコンプライアンス機能が有効になっていることを確認します。 - Kubernetesネームスペースの作成
Kubernetesネームスペースは、すべてのOIRIオブジェクトを格納するために使用されます。 - コンテナ・レジストリ・シークレットの作成
コンテナ・レジストリを使用して、オンデマンドでOracleコンテナ・イメージをプルする場合は、コンテナ・レジストリのログイン詳細を含むシークレットを作成する必要があります。 - Docker HubイメージのKubernetesシークレットの作成
このシークレットを使用すると、Kubernetesはhelm
、kubectl
、logstash
コマンドなど、サードパーティのイメージを含むhub.docker.com
からイメージをプルできます。これらのコマンドは、OUD cronジョブで、「終了中」状態から動かないポッドをテストし、必要に応じて再起動するために使用されます。 - 管理CLIの起動
管理CLIを起動する前に、永続ボリュームが作成されていることを確認します。 - KubernetesクラスタへのCLIアクセス権の付与
OIRI CLIコンテナには、Kubernetesクラスタと対話するための組込みコマンドがあります。管理CLIに、Kubernetesクラスタへのアクセス方法の詳細を指定する必要があります。 - 構成ファイルの作成
OIRIでは、複数のプロパティ・ファイルを使用してOIRIをデプロイします。これらのプロパティ・ファイルは、CLIコマンドを使用して移入されます。 - OIRIキーストアの作成
keytool
コマンドを使用して、OIRIでキーストアを作成します。このコマンドは、ORI-CLIコンテナから実行する必要があります。 - OIRIへのOIG証明書のロード
OIRIでOIGを信頼するには、OIG証明書をOIRIにロードする必要があります。 - ウォレットの作成
OIRIは、データベース/OIG接続情報をウォレットに格納します。OIRI-CLIポッド内からコマンドを実行して、ウォレットを作成する必要があります。 - データベース・スキーマの作成
OIRI-CLIコンテナからコマンドを実行して、データベースにOIRIデータベース・スキーマを作成します。 - ウォレットの確認
ウォレットを作成したら、ウォレットを検証する必要があります。検証に失敗した場合は、続行する前にウォレットを修正します。 - Helmを使用したOIRIのデプロイ
ネームスペースを作成した後、生成されたHelmチャートを使用してOIRIをデプロイできます。コマンドはOIRI-CLIから実行する必要があります。 - OIRIが実行中であることの確認
OIRIをデプロイした後、正常に実行されていることを確認する必要があります。 - Kubernetes NodePortサービスの作成
デフォルトでは、ClusterIP
サービスとして構成されたすべてのコンポーネントでOIRIが作成されます。この構成は、Oracle Identity Role IntelligenceコンポーネントがKubernetesクラスタ内でのみ表示されることを示しています。 - OHS構成の更新
まだ行っていない場合は、Oracle HTTP構成にOIRIエントリを追加する必要があります。 - Data Ingesterを使用した初期データ・ロードの実行
OIRIが起動して実行した後、OIGデータベースから初期データ・ロードを実行する場合があります。
上位トピック: 「エンタープライズ・ドメインの構成」
Oracle Identity Role Intelligenceについて
OIRIは、システム管理者がロール・マイニング操作を実行するために使用します。
- Oracle Identity Role Intelligence管理コンテナ(OIRI-CLI)
- Oracle Identity Role Intelligence (OIRI)マイクロサービス
- Oracle Identity Role Intelligenceユーザー・インタフェース(OIRI-UI)のマイクロサービス
- Oracle Identity Role Intelligence Data Ingester (OIRI-DING)のマイクロサービス
OIRIでは、OAM/OIGデータ・ストアとは異なる方法で大量のデータを処理できるため、専用データベースが使用されます。これは、オンライン・トランザクション処理(OLTP)ではなく、データ・ウェアハウス・モデルを使用します。
この章で使用される変数
この章の以降の項では、多数のファイルを作成する手順について説明します。これらのサンプル・ファイルには、デプロイメントに適用可能な値に置換する必要がある変数が含まれています。
変数の形式は<VARIABLE_NAME>です。次の表に、これらの各変数に設定する必要がある値を示します。
表20-1 変更する必要がある変数
変数 | サンプル値 | 説明 |
---|---|---|
<REGISTRY_ADDRESS> |
|
レジストリの場所。 |
<REGISTRY_SECRET_NAME> |
|
コンテナ・レジストリ資格証明を含むKubernetesシークレットの名前。コンテナ・レジストリから直接イメージをプルする場合にのみ必要です。「コンテナ・レジストリ・シークレットの作成」を参照してください。 |
<REG_USER> |
|
レジストリへのログインに使用するユーザーの名前。 |
<REG_PWD> |
<password> |
レジストリ・ユーザー・パスワード。 |
<OIRI_CLI_REPOSITORY> |
|
OIRI CLIソフトウェア・リポジトリの名前。 コンテナ・イメージをダウンロードしてステージングした場合、この値は Oracleコンテナ・レジストリを使用する場合、値は コンテナ・レジストリを使用する場合、値は製品名を含むレジストリの名前になります: |
<OIRICLI_VER> |
|
使用するイメージのバージョン。 |
<OIRI_REPOSITORY> |
|
OIRIソフトウェア・リポジトリの名前。 コンテナ・イメージをダウンロードしてステージングした場合、この値は Oracleコンテナ・レジストリを使用する場合、値は コンテナ・レジストリを使用する場合、値は製品名を含むレジストリの名前になります: |
<OIRI_VER> |
|
使用するOIRIイメージのバージョン。 |
<OIRI_DING_REPOSITORY> |
|
OIRI DINGソフトウェア・リポジトリの名前。 コンテナ・イメージをダウンロードしてステージングした場合、この値は Oracleコンテナ・レジストリを使用する場合、値は コンテナ・レジストリを使用する場合、値は製品名を含むレジストリの名前になります: |
<OIRIDING_VER> |
|
使用するイメージのバージョン。 |
<OIRI_UI_REPOSITORY> |
|
OIRI UIソフトウェア・リポジトリの名前。 コンテナ・イメージをダウンロードしてステージングした場合、この値は Oracleコンテナ・レジストリを使用する場合、値は コンテナ・レジストリを使用する場合、値は製品名を含むレジストリの名前になります: |
<OIRIUI_VER> |
|
使用するイメージのバージョン。 |
<PVSERVER> |
|
永続ボリュームをホストするNFSサーバーの名前またはIPアドレス。 |
<OIRINS> |
|
OIRIオブジェクトを保持するために使用しているOIRIネームスペースの名前。 |
<DINGNS> |
|
DINGオブジェクトを保持するために使用しているOIRI DINGネームスペースの名前。 |
<WORKDIR> |
|
OIRI用の作業ディレクトリ。 |
<OIRI_SHARE> |
|
OIRI永続ボリュームのNFSマウント場所。 |
<OIRI_SHARE_SIZE> |
|
NFS共有のサイズ。 |
<OIRI_DING_SHARE> |
|
OIRI Ding永続ボリュームのNFSマウント場所。 |
<OIRI_DING_SHARE_SIZE> |
|
NFS共有のサイズ。 |
<OIRI_WORK_SHARE> |
|
OIRI作業永続ボリュームのNFSマウント。 |
<OIRI_NFS_SHARE> |
|
OIRI永続ボリュームのNFS共有マウント・ポイント。 |
<OIG_DB_SCAN> |
|
OIGデータベースのデータベース・ホスト。RACデータベースを使用する場合は、SCANアドレスを使用します。 |
<OIG_DB_LISTENER> |
|
Oracle Identity Governanceデータベースのリスナー・ポート。 |
<OIG_DB_SERVICE> |
|
OIGデータベースのデータベース・サービスの名前。 |
<OIRI_DB_SCAN> |
|
OIRIデータベースのデータベース・ホスト。RACデータベースを使用する場合は、SCANアドレスを使用します。 |
<OIRI_DB_SYS_PWD> |
<password> |
OIRIデータベースのsysパスワード。 |
<OIRI_DB_LISTENER> |
|
OIRIデータベースのリスナー・ポート。 |
<OIRI_DB_SERVICE> |
|
OIRIデータベースのデータベース・サービスの名前。 |
<OIRI_RCU_PREFIX> |
|
OIRIデータベース・スキーマ・オブジェクトに割り当てるデータベース・スキーマ接頭辞。 |
<OIRI_SCHEMA_PWD> |
|
OIRIスキーマに割り当てるパスワード。 |
<OIG_RCU_PREFIX> |
|
OIGスキーマを作成したときに使用した接頭辞。 |
<OIG_SCHEMA_PWD> |
|
|
<USE_INGRESS> |
|
インストールでOIRIネームスペースにイングレス・コントローラを作成する場合は、この値をtrueに設定します。独自のイングレス・コントローラまたはNodePortを使用している場合は、この値をfalseに設定します。 |
<OIRI_INGRESS_HOST> |
|
この値は、OIRIロード・バランサ仮想ホスト名に設定します。OIRIスタンドアロンを使用する場合、この値はOIRI専用に定義したOIRI仮想ホストの名前になります。このホストを統合Oracle Identity and Access Managementデプロイメントの一部としてデプロイする場合(コンテナなど)、Oracle Identity Governanceの管理操作に既存の仮想ホストを使用できます。 |
<OIRI_REPLICAS> |
|
起動するOIRIサーバーの数。HAには2台以上のサーバーが必要です。 |
<OIRI_UI_REPLICAS> |
|
起動するOIRI UIサーバーの数。HAには2台以上のサーバーが必要です。 |
<OIRI_DING_REPLICAS> |
|
起動するDINGサーバーの数。HAには2台以上のサーバーが必要です。 |
<OIRI_KEYSTORE_PASSWORD> |
|
OIG REST証明書をインポートしたときに使用したパスワード。「OIRIへのOIG REST証明書のインポート」を参照してください。 |
<OIRI_SERVICE_USER> |
|
作成したサービスのユーザー名。「OIRIサービス・ユーザーの作成」を参照してください。 |
<OIRI_SERVICE_PWD> |
|
<OIRI_SERVICE_USER>アカウントに割り当てられたパスワード。 |
<OIRI_K8> |
|
OIRI NodePortサービスのKubernetesサービス・ポート。 |
<OIRI_UI_K8> |
|
OIRI-UI NodePortサービスのKubernetesサービス・ポート。 |
<CERT_FILE> |
|
証明書ファイルの名前。 |
<K8_URL> |
|
Kubernetes APIのURL。管理ホストで次のコマンドを使用してURLを取得できます:
|
<CERTIFICATE_FILE > |
|
生成した |
<OIGNS> |
|
OIGで使用されるネームスペース。 |
<OIG_DOMAIN_NAME> |
|
OIGドメインの名前。 |
<OIG_LBR_HOST> |
|
OIMのロード・バランサ・エントリ・ポイント。 |
<OIG_LBR_PORT> |
|
OIMのロード・バランサ・ポート。 |
<OIG_URL> |
http://igdinternal.example.com:7777 http://governancedomain-cluster-oim-clusteroigns.svc.cluster.local:14000 |
これは、OIGインストールのURLです。OIRIは、組織を終了する必要はありません。したがって、内部コールバックURLを使用できます。 OIGインストールがOIGデプロイメントと同じKubernetesクラスタ内にある場合は、次のように内部サービス名を使用できます:
|
<ELK_HOST> |
|
集中管理型のElasticsearchデプロイメントのホストおよびポート。このホストは、Kubernetesクラスタの中と外のどちらでもかまいません。このホストは、Elasticsearchが使用されている場合にのみ使用されます。 |
<ELK_VER> |
|
使用するElasticsearchのバージョン。 |
OIRIインストールの特徴
この項では、作成しようとしているOIRIインストールの主な特徴を示します。これらの特性を確認して、OIRIの構成に使用される手順の目的とコンテキストを理解します。
表20-2 OIRIインストールの主な特徴
OIRIの特徴 | 詳細情報 |
---|---|
マイクロサービスはそれぞれ、Kubernetesクラスタ内のポッドにデプロイされます。 |
「Kubernetesデプロイメントについて」を参照してください。 |
OIRIコンポーネントを専用のKubernetesネームスペースに配置します。 |
「Kubernetesデプロイメントについて」を参照してください。 |
DINGコンポーネントは専用ネームスペースに配置されますが、必要に応じてOIRIネームスペースと組み合せることができます。 |
「Kubernetesデプロイメントについて」を参照してください。 |
Kubernetesサービスを使用してマイクロサービスと対話します。 |
「Kubernetesサービスの作成」を参照してください。 |
Kubernetes永続ボリュームを使用して構成情報を保持します。 |
unresolvable-reference.html#GUID-CF07EE44-34D9-4F36-97BE-6B3FBB4FCEA8を参照してください。 |
各Kubernetesポッドは、事前作成済のOracleコンテナ・イメージから作成されます。 |
|
Oracle Identity Governanceをインストールして構成する必要があります。 |
「WDTを使用したOracle Identity Governanceの構成」を参照してください。 |
インストールは、スタンドアロンにも統合にもできます。 |
unresolvable-reference.html#GUID-62F73C7C-55E9-4E1E-9D2A-AE35749DC11Dを参照してください。 |
Kubernetesサービス
NodePortサービスを使用している場合、OIRIインストールの一部としてKubernetesサービス'OIRI-nodeport
'および'OIRI-ui-nodeport
'が作成されます。イングレスを使用している場合は、イングレス・サービスが作成されます。
表20-3 Kubernetes NodePortサービス
サービス名 | タイプ | サービス・ポート | マップ済ポート |
---|---|---|---|
|
|
|
|
|
|
|
|
表20-4 イングレス・サービス
サービス名 | ホスト名 |
---|---|
|
|
開始する前に
インストールを開始する前に、このトピックにリストされているすべての必須タスクが完了していることを確認する必要があります。
- 必要なOracleコンテナ・イメージが各Kubernetesワーカー・ノードにステージングされているか、アクセス権のあるコンテナ・レジストリでホストされていること。
次のOracleコンテナ・イメージをステージングする必要があります:
- OIRI-CLI
- OIRI
- OIRI-UI
- OIRI-DING
- 「Oracle HTTP Serverのインストールと構成」の説明に従って、Oracle HTTP Serverを構成していること。
- 「Oracle Unified Directoryのインストールおよび構成」の説明に従って、Oracle Unified Directoryを構成していること。
- 「WDTを使用したOracle Identity Governanceの構成」の説明に従って、Oracle Identity Governanceを構成していること。
- 「OAMへの不足ポリシーの追加」の説明に従って、OIRIの不足しているOAMポリシーを追加してあること。
製品固有の作業ディレクトリの設定
この項では、ダウンロードしたサンプル・デプロイメント・スクリプトをOIRIの構成ホストの一時作業ディレクトリにコピーする方法について説明します。
- インストール・ユーザーとして一時作業ディレクトリを作成します。インストール・ユーザーには、Kubernetesクラスタへの
kubectl
アクセス権が必要です。mkdir -p /<WORKDIR>
たとえば:mkdir -p /workdir/OIRI
- ディレクトリをこの場所に変更します:
cd /workdir/OIRI
Oracle Identity Governanceでのユーザー名とグループの作成
Oracle Identity Role Intelligenceは、Oracle Identity Governanceのユーザーおよびグループを使用して認証します。OIRIの構成を開始する前に、https://prov.example.com/identity
URLを使用してOIGセルフ・サービス・コンソールにログインし、必要なユーザー名とグループを作成します。
- OIRIサービス・アカウント
- OIRIユーザー・アカウント
- OIRIグループ
OIGコンプライアンス・モードが有効であることの確認
OIRIが機能するには、OIGのコンプライアンス機能が有効になっていることを確認します。
http://igdadmin.example.com/sysadmin
URLを使用してOIG Sysadminコンソールにログインします。- 「構成プロパティ」をクリックします。
- キーワード
OIG.IsIdentityAuditorEnabled
を使用してシステム・プロパティを検索します。 - プロパティを編集し、trueに設定されていることを確認します。そうでない場合は、値をtrueに修正し、「保存」をクリックします。
Kubernetesネームスペースの作成
Kubernetesネームスペースは、すべてのOIRIオブジェクトを格納するために使用されます。
次のコマンドを使用して、OIRIおよびDINGに個別のネームスペースを作成します。
kubectl create namespace <OIRINS>
kubectl create namespace <DINGNS>
たとえば:
kubectl create namespace oirins
kubectl create namespace dingns
コンテナ・レジストリ・シークレットの作成
コンテナ・レジストリを使用して、オンデマンドでOracleコンテナ・イメージをプルする場合は、コンテナ・レジストリのログイン詳細を含むシークレットを作成する必要があります。
コンテナ・イメージをローカルにステージングした場合は、このステップは必要ありません。
kubectl create secret -n <OIRINS> docker-registry <REGISTRY_SECRET_NAME> --docker-server=<REGISTRY_ADDRESS> --docker-username=<REG_USER> --docker-password=<REG_PWD>
kubectl create secret -n oirins docker-registry regcred --docker-server=iad.ocir.io/mytenancy --docker-username=mytenancy/oracleidentitycloudservice/myemail@email.com --docker-password=<password>
OIRI DINGにコンテナ・レジストリ・シークレットを作成するには、次のコマンドを使用します:
kubectl create secret -n <DINGNS> docker-registry <REGISTRY_SECRET_NAME> --docker-server=<REGISTRY_ADDRESS> --docker-username=<REG_USER> --docker-password=<REG_PWD>
kubectl create secret -n dingns docker-registry regcred --docker-server=iad.ocir.io/mytenancy --docker-username=mytenancy/oracleidentitycloudservice/myemail@email.com --docker-password=<password>
Docker HubイメージのKubernetesシークレットの作成
このシークレットを使用すると、Kubernetesはhelm
、kubectl
、logstash
コマンドなど、サードパーティのイメージを含むhub.docker.com
からイメージをプルできます。これらのコマンドは、OUD cronジョブで、「終了中」状態から動かないポッドをテストし、必要に応じて再起動するために使用されます。
hub.docker.com
にアカウントが必要です。イメージを独自のリポジトリにステージングする場合は、それを実行し、helm
オーバーライド・ファイルを適宜変更できます。
hub.docker.com
にKubernetesシークレットを作成するには、次のコマンドを使用します:
$ kubectl create secret docker-registry dockercred --docker-server="https://index.docker.io/v1/" --docker-username="<DH_USER>" --docker-password="<DH_PWD>" --namespace=<OUDNS>
$ kubectl create secret docker-registry dockercred --docker-server="https://index.docker.io/v1/" --docker-username="username" --docker-password="<mypassword>" --namespace=oudns
KubernetesクラスタへのCLIアクセス権の付与
OIRI CLIコンテナには、Kubernetesクラスタと対話するための組込みコマンドがあります。管理CLIに、Kubernetesクラスタへのアクセス方法の詳細を指定する必要があります。
アクセスを提供するには、kubectl
コマンドが機能しているノードで次のステップを実行します:
Kubernetesサービス・シークレットの作成
kubectl create -f <WORKDIR>/create_svc_secret.yaml
kubectl create -f /workdir/OIRI/create_svc_secret.yaml
<WORKDIR>/create_svc_secret.yaml
の内容は次のとおりです:apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: oiri-service-account
namespace: <OIRINS>
annotations:
kubernetes.io/service-account.name: "oiri-service-account"
親トピック: KubernetesクラスタへのCLIアクセス権の付与
Kubernetesサービス・アカウントの作成
workdir/OIRI/create_svc.yaml
ファイルを作成します:kubectl apply -f <WORKDIR>/create_svc.yaml
kubectl apply -f /workdir/OIRI/create_svc.yaml
create_svc.yaml
ファイルの内容は次のとおりです:apiVersion: v1
kind: ServiceAccount
metadata:
name: oiri-service-account
namespace: <OIRINS>
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: oiri-ns-role
namespace: <OIRINS>
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: ding-ns-role
namespace: <DINGNS>
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: oiri-clusterrolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:persistent-volume-provisioner
subjects:
- namespace: <OIRINS>
kind: ServiceAccount
name: oiri-service-account
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: oiri-clusteradmin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- namespace: <OIRINS>
kind: ServiceAccount
name: oiri-service-account
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: oiri-rolebinding
namespace: <OIRINS>
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: oiri-ns-role
subjects:
- namespace: <OIRINS>
kind: ServiceAccount
name: oiri-service-account
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: ding-rolebinding
namespace: <DINGNS>
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ding-ns-role
subjects:
- namespace: <OIRINS>
kind: ServiceAccount
name: oiri-service-account
apiVersion: v1
kind: ServiceAccount
metadata:
name: oiri-service-account
namespace: oirins
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: oiri-ns-role
namespace: oirins
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: ding-ns-role
namespace: dingns
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: oiri-clusterrolebinding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:persistent-volume-provisioner
subjects:
- namespace: oirins
kind: ServiceAccount
name: oiri-service-account
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: oiri-clusteradmin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- namespace: oirins
kind: ServiceAccount
name: oiri-service-account
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: oiri-rolebinding
namespace: oirins
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: oiri-ns-role
subjects:
- namespace: oirins
kind: ServiceAccount
name: oiri-service-account
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: ding-rolebinding
namespace: dingns
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: ding-ns-role
subjects:
- namespace: oirins
kind: ServiceAccount
name: oiri-service-account
親トピック: KubernetesクラスタへのCLIアクセス権の付与
ca.crt
証明書の生成
次のコマンドを使用してKubernetes証明書を取得します:
OIRIネームスペースおよび作業ディレクトリの環境変数を設定します。
OIRINS=<OIRINS>
WORKDIR=/workdir/OIRI
TOKENNAME=`kubectl -n $OIRINS get serviceaccount/oiri-service-account -o jsonpath='{.secrets[0].name}'`
TOKENNAME=oiri-service-account
TOKEN=`kubectl -n $OIRINS get secret $TOKENNAME -o jsonpath='{.data.token}'| base64 --decode`
kubectl -n $OIRINS get secret $TOKENNAME -o jsonpath='{.data.ca\.crt}'| base64 --decode > $WORKDIR/ca.crt
親トピック: KubernetesクラスタへのCLIアクセス権の付与
OIRI用のKubernetes構成ファイルの作成
Kubernetes構成ファイルを生成して、kubectl
との対話方法をOIRIに指示します。これを行うには、次のステップを実行します。
OIRIネームスペースおよび作業ディレクトリの環境変数を設定します。
OIRINS=<OIRINS>
WORKDIR=/workdir/OIRI
TOKEN=`kubectl -n $OIRINS get secret $TOKENNAME -o jsonpath='{.data.token}'| base64 --decode`
K8URL=`grep server: $KUBECONFIG | sed 's/server://;s/ //g'`
kubectl config --kubeconfig=$WORKDIR/oiri_config set-cluster oiri-cluster --server=$K8URL --certificate-authority=$WORKDIR/ca.crt --embed-certs=true
kubectl config --kubeconfig=$WORKDIR/oiri_config set-credentials oiri-service-account --token=$TOKEN
kubectl config --kubeconfig=$WORKDIR/oiri_config set-context oiri --user=oiri-service-account --cluster=oiri-cluster
kubectl config --kubeconfig=$WORKDIR/oiri_config use-context oiri
これらのコマンドは、oiri_config
というファイルを<WORKDIR
>の場所に生成します。このファイルには、Kubernetesクラスタの詳細が含まれます。
親トピック: KubernetesクラスタへのCLIアクセス権の付与
OIRI-CLIコンテナへのファイルのコピー
次のコマンドを使用して、ca.crt
(「ca.crt証明書の生成」を参照)およびoiri_config
(「OIRI用のKubernetes構成ファイルの作成」を参照)ファイルをOIRI-CLIコンテナにコピーします:
OIRINS=<OIRINS>
WORKDIR=/workdir/OIRI
kubectl cp $WORKDIR/ca.crt $OIRINS/oiri-cli:/app/k8s
kubectl cp $WORKDIR/oiri_config $OIRINS/oiri-cli:/app/k8s/config
oiri-cli
から、次のコマンドを実行します:chmod 400 /app/k8s/config
親トピック: KubernetesクラスタへのCLIアクセス権の付与
kubectl
コマンドの検証
OIRI-CLIコンテナから次のコマンドを使用して、Kubernetesコンテナ内からkubectl
コマンドが機能することを検証します。
kubectl get pod -n $OIRINS
kubectl get pod -n oirins
このコマンドは、実行中のoiri-cli
ポッドを表示します。
親トピック: KubernetesクラスタへのCLIアクセス権の付与
構成ファイルの作成
OIRIでは、複数のプロパティ・ファイルを使用してOIRIをデプロイします。これらのプロパティ・ファイルは、CLIコマンドを使用して移入されます。
OIRI-CLIコンテナ内から次のステップを実行します。
設定構成ファイルの作成
/oiri-cli/scripts/setupConfFiles.sh -m prod \
--oigdbhost <OIG_DB_SCAN> \
--oigdbport <OIG_DB_LISTENER> \
--oigdbsname <OIG_DB_SERVICE> \
--oiridbhost <OIRI_DB_SCAN> \
--oiridbport <OIRI_DB_LISTENER> \
--oiridbsname <OIRI_DB_SERVICE> \
--sparkmode k8s \
--dingnamespace <DINGNS> \
----dingimage <OIRI_DING_REPOSITORY>:<OIRIDING_VER> \
--cookiesecureflag false \
--k8scertificatefilename <CERTIFICATE_FILE> \
--sparkk8smasterurl k8s://<K8_URL> \
--oigserverurl <OIG_URL>
/oiri-cli/scripts/setupConfFiles.sh -m prod \
--oigdbhost db-scan.example.com \
--oigdbport 1521 \
--oigdbsname oig_s.example.com \
--oiridbhost db-scan.example.com \
--oiridbport 1521 \
--oiridbsname oiri_s.example.com \
--sparkmode k8s \
--dingnamespace dingns \
--dingimage oiri-ding:12.2.1.4.02106 \
--cookiesecureflag false \
--k8scertificatefilename ca.crt \
--sparkk8smasterurl k8s://https://10.0.0.10:6443 \
--http://governancedomain-cluster-oim-cluster.oigns.svc.cluster.local:14000
INFO: OIG DB as source for ETL is true
INFO: Setting up /app/data/conf/config.yaml
INFO: Setting up /app/data/conf/data-ingestion-config.yaml
INFO: Setting up /app/data/conf/custom-attributes.yaml
INFO: Setting up /app/oiri/data/conf/application.yaml
INFO: Setting up /app/oiri/data/conf/authenticationConf.yaml
INFO: Setting up /app/data/conf/dbconfig.yaml
ls /app/data/conf
config.yaml custom-attributes.yaml data-ingestion-config.yaml dbconfig.yaml
親トピック: 構成ファイルの作成
Helm構成ファイルの作成
OIRIは、helm
を使用してデプロイされます。helm
の構成ファイルを作成するには、OIRI-CLIコンテナ内で次のコマンドを実行します。
/oiri-cli/scripts/setupValuesYaml.sh \
--oiriapiimage <OIRI_REPOSITORY>:<OIRI_VER> \
--oirinamespace <OIRINS> \
--oirinfsserver <PVSERVER> \
--oirireplicas <OIRI_REPLICAS> \
--oiriuireplicas <OIRI_UI_REPLICAS> \
--sparkhistoryserverreplicas <OIRI_DING_REPLICAS> \
--oirinfsstoragepath <OIRI_NFS_SHARE> \
--oirinfsstoragecapacity <OIRI_SHARE_SIZE> \
--oiriuiimage <OIRI_UI_REPOSITORY>:<OIRIUI_VER> \
--dingimage <OIRI_DING_REPOSITORY>:<OIRIDING_VER> \
--dingnamespace <DINGNS> \
--dingnfsserver <PVSERVER> \
--dingnfsstoragepath <OIRI_DING_SHARE> \
--dingnfsstoragecapacity <OIRI_DING_SHARE_SIZE> \
--ingressenabled <USE_INGRESS> \
--ingresshostname <OIRI_INGRESS_HOST> \
--sslenabled false
/oiri-cli/scripts/setupValuesYaml.sh \
--oiriapiimage oiri:12.2.1.4.02106 \
--oirinamespace oirins \
--oirinfsserver 1.1.1.1 \
--oirireplicas 2 \
--oiriuireplicas 2 \
--sparkhistoryserverreplicas 2 \
--oirinfsstoragepath /exports/iampvs/oiripv \
--oirinfsstoragecapacity 10Gi \
--oiriuiimage oiri-ui:12.2.1.4.02106 \
--dingimage oiri-ding:12.2.1.4.02106 \
--dingnamespace dingns \
--dingnfsserver 1.1.1.1 \
--dingnfsstoragepath /exports/iampvs/dingpv \
--dingnfsstoragecapacity 10Gi \
--ingressenabled false \
--ingresshostname igdadmin.example.com \
--sslenabled false
/app/k8s/values.yaml
ファイルが作成されていることを確認します。
親トピック: 構成ファイルの作成
OIRIキーストアの作成
keytool
コマンドを使用して、OIRIでキーストアを作成します。このコマンドは、ORI-CLIコンテナから実行する必要があります。
keytool -genkeypair -alias oiri -keypass <OIRI_KEYSTORE_PWD> -keyalg RSA \
-keystore /app/oiri/data/keystore/keystore.jks \
-storepass <OIRI_KEYSTORE_PWD> -storetype pkcs12 \
-dname \"CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown\" \
-noprompt
OIRIへのOIG証明書のロード
OIRIでOIGを信頼するには、OIG証明書をOIRIにロードする必要があります。
証明書をロードするには、次のステップを実行します:
OIG REST証明書の取得
OIG REST証明書(通常のOIG証明書とは異なる)を取得するには、OIG管理サーバー・コンテナ内からコマンドを実行する必要があります。
OIG REST証明書を取得するには:
OIRIへのOIG REST証明書のインポート
keytool -import \
-alias xell \
-file /app/k8s/xell.pem \
-keystore /app/oiri/data/keystore/keystore.jks\
-storepass <OIRI_KEYSTORE_PWD> -noprompt
親トピック: OIRIへのOIG証明書のロード
OIG SSL証明書の取得
OIG REST証明書に加えて、OIG SSL証明書も信頼する必要があります。この証明書はロード・バランサに割り当てられます。この証明書を取得する最も簡単な方法は、OIGロード・バランサにアクセスできる次のコマンドを使用することです:
openssl s_client -connect <OIG_LBR_HOST>:<OIG_LBR_PORT> -showcerts </dev/null 2>/dev/null|openssl x509 -outform PEM > <OIG_LBR_HOST>.pem
openssl s_client -connect prov.example.com:443 -showcerts </dev/null 2>/dev/null|openssl x509 -outform PEM > prov.example.com.pem
kubectl cp /workdir/OIRI/prov.example.com.pem oirins/oiri-cli:/app/k8s/prov.example.com.pem
親トピック: OIRIへのOIG証明書のロード
OIRIへのOIG SSL証明書のインポート
keytool -import \
-alias oigssl \
-file /app/k8s/<CERT_FILE> \
-keystore /app/oiri/data/keystore/keystore.jks\
-storepass <OIRI_KEYSTORE_PWD> -noprompt
keytool -import \
-alias oigssl \
-file /app/k8s/prov.example.com.pem \
-keystore /app/oiri/data/keystore/keystore.jks\
-storepass <password> -noprompt
親トピック: OIRIへのOIG証明書のロード
ウォレットの作成
OIRIは、データベース/OIG接続情報をウォレットに格納します。OIRI-CLIポッド内からコマンドを実行して、ウォレットを作成する必要があります。
oiri-cli --config=/app/data/conf/config.yaml wallet create \
--oigsau <OIRI_SERVICE_USER> \
--oigsap <OIRI_SERVICE_PWD> \
--oirijka oiri \
--oirijkp <OIRI_KEYSTORE_PWD> \
--oiriksp <OIRI_KEYSTORE_PWD> \
--oiridbuprefix <OIRI_RCU_PREFIX> \
--oiridbp <OIRI_SCHEMA_PWD> \
--oigdbu <OIG_RCU_PREFIX>_OIM \
--oigdbp <OIG_SCHEMA_PWD>
oiri-cli --config=/app/data/conf/config.yaml wallet create \
--oigsau oirisvc \
--oigsap myservicepwd \
--oirijka oiri \
--oirijkp mykeystorepwd \
--oiriksp mykeystorepwd \
--oiridbuprefix oiri \
--oiridbp myschemapwd \
--oigdbu IGD_OIM \
--oigdbp myoigschemapwd
ls /app/data/wallet /app/oiri/data/wallet
データベース・スキーマの作成
OIRI-CLIコンテナからコマンドを実行して、データベースにOIRIデータベース・スキーマを作成します。
oiri-cli --config=/app/data/conf/config.yaml schema create /app/data/conf/dbconfig.yaml --sysp <OIRI_DB_SYS_PWD>
oiri-cli --config=/app/data/conf/config.yaml schema migrate /app/data/conf/dbconfig.yaml
Creating the schema oiri_oiri CREATING OIRI SCHEMA ............ =================================================== DB USER oiri_oiri has been successfully created Migrating the OIRI schema Migrating OIRI SCHEMA ............ =================================================== log4j:WARN No appenders could be found for logger (org.flywaydb.core.internal.scanner.classpath.ClassPathScanner). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. ========== Before Migrate ============= Script:V1__RoleMining.sql Installed On:null State:PENDING Version:1 Description:RoleMining ========== After Migrate ============= Script:V1__RoleMining.sql Installed On:2021-03-02 08:01:54.18592 State:SUCCESS Version:1 Description:RoleMining OIRI Schema has been successfully migrated
ウォレットの確認
ウォレットを作成したら、ウォレットを検証する必要があります。検証に失敗した場合は、続行する前にウォレットを修正します。
./verifyWallet.sh
Verifying Wallets. Wallet locations and entries will be validated DING Wallet is Valid. OIRI Wallet is Valid. OIRI DB Connection is Valid. OIG DB Connection is Valid. KeyStore location and entries are Valid. OIG Server Connection is Valid. SUCCESS: Wallet locations and entries are valid.
oiri-cli --config=/app/data/conf/config.yaml wallet update
Helmを使用したOIRIのデプロイ
ネームスペースを作成した後、生成されたHelmチャートを使用してOIRIをデプロイできます。コマンドはOIRI-CLIから実行する必要があります。
helm install oiri /helm/oiri -f /app/k8s/values.yaml
NAME: oiri LAST DEPLOYED: Mon Jan 11 15:14:22 2021 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Please be patient while the chart installs. Pod may not be in running status. To check the status of the pod, run following command. Pods READY state must be 1/1 and status RUNNING kubectl get pods --namespace oiri kubectl get pods --namespace ding Access OIRI Service by using following URL in your browser. https://IP_ADDRESS:PORT/ Access OIRI UI by using following URL in your browser. https://IP_ADDRESS:PORT/oiri/ui/v1/console Admins can access DING History Server by port forwarding the ding-history pod through kubectl. kubectl port-forward <pod_name> <desired_port>:18080 -n ding Inside the DING-CLI, use following commands to start data ingestion ding-cli --config=/app/data/conf/config.yaml data-ingestion start /app/data/conf/data-ingestion-config.yaml
OIRIが実行中であることの確認
OIRIをデプロイした後、正常に実行されていることを確認する必要があります。
kubectl -n <OIRINS> get pods -o wide
kubectl -n <DINGNS> get pods -o wide
ステータスが「実行中」のポッドのリストが表示されます。たとえば:
NAME READY STATUS RESTARTS AGE oiri-6cd5755fb-j7r4 1/1 Running 0 42h oiri-6cd5755fb-s42xx 1/1 Running 0 42h oiri-ui-d55cd6b69-62nm6 1/1 Running 0 42h oiri-ui-d55cd6b69-rxdwm 1/1 Running 0 42h
kubectl -n dingns get pods
NAME READY STATUS RESTARTS AGE oiri-ding-7045127aee424d93-driver 0/1 Completed 0 41h spark-history-server-6cc6d9d8c7-2594r 1/1 Running 0 42h spark-history-server-6cc6d9d8c7-jdcqc 1/1 Running 0 42h
Kubernetes NodePortサービスの作成
デフォルトでは、ClusterIP
サービスとして構成されたすべてのコンポーネントでOIRIが作成されます。この構成は、Oracle Identity Role IntelligenceコンポーネントがKubernetesクラスタ内でのみ表示されることを示しています。
エンタープライズ・デプロイメントでは、OIRIコンポーネントとのすべての対話は、Kubernetesクラスタの外部にあるOracle HTTP Serverを介して行われます。OHSおよびイングレス・コントローラを使用する場合は、イングレス・サービスが自動的に作成されます。NodePortデプロイメントを使用している場合は、NodePortサービスを作成してデプロイメントにアクセスする必要があります。
OHS構成の更新
まだ行っていない場合は、Oracle HTTP構成にOIRIエントリを追加する必要があります。
「Oracle Identity Role Intelligence用のOracle HTTP Serverの構成」を参照してください。
Data Ingesterを使用した初期データ・ロードの実行
OIRIが起動して実行した後、OIGデータベースから初期データ・ロードを実行する場合があります。
データ・ロードには、次のステップを実行します:
DINGへのKubernetes証明書のコピー
DINGとKubernetes間の対話を有効にするには、Kubernetes証明書をDINGコンテナにコピーする必要があります。
証明書をコピーするには:
DING構成の確認
ding-cli --config=/app/data/conf/config.yaml data-ingestion verify /app/data/conf/data-ingestion-config.yaml
SUCCESS: Data Ingestion Config is valid
データ収集の実行
ding-cli --config=/app/data/conf/config.yaml data-ingestion start /app/data/conf/data-ingestion-config.yaml
INFO: 21/07/28 18:02:43 INFO LoggingPodStatusWatcherImpl: Application status for spark-901c5ed4ba4e4233b4501b8e1279a9cf (phase: Succeeded)
このエントリは、データ・ロードが成功したことを示します。
次のデータ・ロードを増分に設定
/ding-cli/scripts/updateDataIngestionConfig.sh \
--entityusersenabled true --entityuserssyncmode incremental \
--entityapplicationsenabled true --entityapplicationssyncmode incremental \
--entityentitlementsenabled true --entityentitlementssyncmode incremental \
--entityassignedentitlementsenabled true --entityassignedentitlementssyncmode incremental \
--entityrolesenabled true --entityrolessyncmode incremental \
--entityrolehierarchyenabled true --entityrolehierarchysyncmode incremental \
--entityroleusermembershipsenabled true --entityroleusermembershipssyncmode incremental \
--entityroleentitlementcompositionsenabled true --entityroleentitlementcompositionssyncmode incremental \
--entityaccountsenabled true --entityaccountssyncmode