RESTベースのアイデンティティ対応システムに接続するためのOCIサーバーレス機能の設定
汎用REST 「オーケストレーションされたシステム」でのOCI関数の使用方法
Oracle Access Governanceは、REST API統合にOCI関数を利用します。 作成する各汎用REST「オーケストレーションされたシステム」は、リクエストを処理してレスポンスを生成するロジックを含むOCI関数に関連付けられます。 Oracle Access Governanceによってトリガーされると、データ・リコンシリエーションおよびプロビジョニング操作のために「管理対象システム」のREST APIがコールされます。
OCI関数の使用方法の詳細は、「Oracle Cloud Infrastructureファンクション」を参照してください。
OCI関数を有効にするためのテナンシの構成
OCI関数を使用してファンクションを作成およびデプロイする前に、これをサポートするためにOracle Cloud Infrastructureリソースを作成する必要があります。 作成する必要があるリソースには、ユーザー・アカウント、ユーザー・アカウントが属するグループ、コンパートメント、仮想クラウド・ネットワーク(VCN)、ボールトとシークレット、およびグループ(およびそのグループに属するユーザー・アカウント)にファンクション関連リソースへのアクセス権を付与するポリシーが含まれます。 適切なリソースがすでに存在する場合、新しいリソースを作成する必要はありません。
ユーザーとグループの作成
OCI機能の管理に適したユーザーまたはグループがない場合は、次を実行します:
- テナンシ管理者としてOracle Cloud Infrastructureコンソールにサインオンします。
- ナビゲーション・メニューを開き、「アイデンティティ&セキュリティ」→「アイデンティティ」→「ドメイン」→「<YourDomain>」→「グループ」→「グループの作成」を選択します。
- グループの作成(ocifn_grpなど): グループの作成方法の詳細は、グループを作成するにはを参照してください。
- 「アイデンティティ&セキュリティ」→「アイデンティティ」→「ドメイン」→「<YourDomain>」→「ユーザー」→「ユーザーの作成」を選択します。
- ユーザーの作成(ocifn_userなど): ユーザーの作成方法の詳細は、ユーザーを作成するにはを参照してください。
- 「グループ」→「グループへのユーザーの割り当て」を選択します。
- グループにocifn_userを割り当てます: ユーザーをグループに追加する方法の詳細は、「グループにユーザーを追加するには」を参照してください
コンパートメントの作成
- テナンシ管理者としてOracle Cloud Infrastructureコンソールにサインオンします。
- ナビゲーション・メニューを開き、「アイデンティティ&セキュリティ」→「アイデンティティ」→「コンパートメント」を選択します。
- コンパートメントの作成を選択し、コンパートメントを追加します(たとえば、ocifn_compartment): コンパートメントの作成の詳細は、コンパートメントを作成するにはを参照してください
ノート:
所有するコンパートメントを作成します:- ネットワーク・リソース
- ファンクション関連リソース
VCNとサブネットを作成します
- テナンシ管理者としてOracle Cloud Infrastructureコンソールにサインオンします。
- ナビゲーション・メニューを開き、「ネットワーク」→「仮想クラウド・ネットワーク」を選択します。
- 「VCNウィザードの起動」を選択して、新しいVCNを作成します。
- ダイアログで、「インターネット接続性を持つVCNの作成」を選択し、「VCNウィザードの起動」をクリックします。
- ウィザードで、次の詳細を入力します:
- VCN名: VCN名(たとえば、ocifn_vcn)を入力します。
- コンパートメント : VCNリソースが作成されるコンパートメントを入力します(例: ocifn_compartment)。
- 「次」をクリックし、「作成」をクリックして、VCNおよび関連するネットワーク・リソースを作成します。
VCN作成時のすべてのオプションの詳細は、「OCI関数で使用するVCNおよびサブネットの作成」を参照してください。
OCI Vaultおよびシークレットの作成
クライアント資格証明を格納する適切なボールトがない場合:
- テナンシ管理者としてOracle Cloud Infrastructureコンソールにサインオンします。
- ナビゲーション・メニューを開き、「アイデンティティ&セキュリティ」→「キー管理&秘密管理」を選択
- 「ボールトの作成」をクリックします。
- Vaultが作成されるコンパートメントを選択し、Vaultに名前を付けます。 「ボールトの作成」をクリックします。
- 作成したVaultを開き、「キーの作成」をクリックします。 Vaultを作成したコンパートメントと同じコンパートメントにキーを作成します。 キーに名前を付けて、「キーの作成」をクリックします。
- 「リソース」メニューから、「シークレット」を選択します。 「シークレットの作成」をクリックします。
- 「シークレットの作成」ページで、コンパートメント、名前および説明の詳細を追加します。 作成したキーを「暗号化キー」ドロップダウン・リストから選択します。 「手動シークレット生成」オプションを選択し、「シークレット・コンテンツ」フィールドに、次のいずれかの形式でクライアント・コードおよびクライアント・シークレットを入力します。
- OAuthベースの認可OAuthベースの認可の認可トークンを作成するサンプル・コードについては、「OAuth認証 - サンプル・トークン作成コード」を参照してください。
{ "clientCode": "69b48365-14e2-430a-bd75-171f89c158fa", "clientSecret": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" } - Basic認証.
{ "username": "69b48365-14e2-430a-bd75-171f89c158fa", "password": "*/Z9g:gM*SWWLLCGkQhQg2hdWelAZD82" }
- OAuthベースの認可
- 変更を保存するには、「シークレットの作成」を選択します。
作成したシークレットを使用して、リクエスト機能でクライアント・シークレットを渡すことができます。 作成したシークレットを選択し、シークレットOCIDの値をコピーします。これはocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0のようになります。
<SampleBase>/grc-request-template/src/main/resources/request/applications/<YourApplicationName>/config.yamlファイルを編集し、シークレットおよびリージョンの詳細を追加します。たとえば:secretId: "ocid1.vaultsecret.oc1.iad.dyyyyehdl4ggaawnqt47hfj48ltofzkdg6wy5fjne859jg0"
region: "us-ashburn-1"OCI Vaultシークレットの詳細は、「Vaultシークレットの管理」を参照してください。
動的グループの作成または更新
OCI Vaultおよびシークレット・サービスを使用するには、ファンクションが動的グループに含まれている必要があります。 動的グループの作成方法の詳細は、「動的グループの管理」の手順に従ってください。
ALL { resource.type = 'fnfunc', resource.compartment.id = 'ocid1.compartment.oc1..fdfdfege4om6nat7fue56566556qqvj3eesjqhmjaegeiaxa' }OCI Vaultおよびシークレットのポリシーの作成
上のステップで作成した動的グループがテナンシ内のシークレット・ファミリを読み取ることを許可する新しいポリシーを作成します。 OCIポリシーの作成の詳細は、「ポリシー構文」を参照してください
- テナンシ管理者としてOracle Cloud Infrastructureコンソールにサインオンします。
- ナビゲーション・メニューを開き、「アイデンティティ&セキュリティ」→「アイデンティティ」→「ポリシー」を選択します。
- 「ポリシーの作成」を選択し、ポリシーの名前(ocifn_policyなど)を指定し、テナンシのルート・コンパートメントを選択します。
- 次のようなポリシー・ステートメントを追加します:
Allow dynamic-group <dynamic-group-name> to read secret-family in tenancy
グループとサービスのポリシーの作成
- テナンシ管理者としてOracle Cloud Infrastructureコンソールにサインオンします。
- ナビゲーション・メニューを開き、「アイデンティティ&セキュリティ」→「アイデンティティ」→「ポリシー」を選択します。
- 「ポリシーの作成」を選択し、ポリシーの名前(ocifn_policyなど)を指定し、テナンシのルート・コンパートメントを選択します。
- ポリシー・ビルダーを使用して、「ポリシーのユース・ケース」リストから「関数」を選択し、「ユーザーがファンクションおよびアプリケーションを作成、デプロイおよび管理できるようにします」テンプレートに基づいてポリシーを作成します。
- 前に作成したグループocifn_groupと、そのロケーションのocifn_compartmentを選択します。 これにより、次のようなポリシー・ステートメントが提供されます:
Allow group 'Default'/'ocifn_grp' to use cloud-shell in tenancy Allow group 'Default'/'ocifn_grp' to manage repos in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to read objectstorage-namespaces in tenancy Allow group 'Default'/'ocifn_grp' to manage logging-family in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to read metrics in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to manage functions-family in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to use virtual-network-family in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to use apm-domains in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to read vaults in compartment ocifn_compartment Allow group 'Default'/'ocifn_grp' to use keys in compartment ocifn_compartment Allow service faas to use apm-domains in compartment ocifn_compartment Allow service faas to read repos in tenancy where request.operation='ListContainerImageSignatures' Allow service faas to {KEY_READ} in compartment ocifn_compartment where request.operation='GetKeyVersion' Allow service faas to {KEY_VERIFY} in compartment ocifn_compartment where request.operation='Verify'
OCI関数のポリシーの作成の詳細は、「ネットワークおよび機能関連リソースへのアクセスを制御するポリシーの作成」を参照してください
OCI関数をグループ化するアプリケーションの作成
OCI Functionsでは、アプリケーションはファンクションの論理グループです。 アプリケーションに指定するプロパティによって、そのアプリケーション内のすべての機能のリソース割当ておよび構成が決まります。 アプリケーション内でファンクションを作成する必要があるため、OCI Functionsでファンクションを作成する前に、少なくとも1つのアプリケーションが存在する必要があります。
- ファンクション開発者としてOracle Cloud Infrastructureコンソールにサインオンします。
- ナビゲーション・メニューを開き、「開発者サービス」→「関数」→「アプリケーション」を選択します。
- 汎用REST関数に使用するコンパートメントを選択します。
- 「アプリケーションの作成」をクリックします。
- アプリケーションの名前(agcs-generic-rest-connectorなど)を追加します。 ファンクションをこのアプリケーションにデプロイし、ファンクションの呼出し時にこのアプリケーションを指定します。
- ファンクションを実行するVCNおよびサブネットを選択します。
- 「作成」をクリックします。
OCI Functionsを使用したアプリケーションの作成の詳細は、「アプリケーションの作成」を参照してください。
OCIファンクションを開発するための設定環境
OCI Functionsを作成してデプロイするには、開発環境をインストールして設定する必要があります。
- Dockerのインストールおよび起動
- API署名キーとOCIプロファイルの設定
- Fn Projectコマンドライン・インタフェースのインストール(CLI)
- Fn Project CLIコンテキスト・プロバイダの設定
- Fn Project CLIコンテキスト構成の完了
- 認証トークンの生成
- レジストリにログイン
開発環境を設定したら、汎用REST「オーケストレーションされたシステム」のファンクションの開発とデプロイを開始できます。
OCIへの機能の開発とデプロイ
汎用REST オーケストレーションされたシステムをデプロイするには、RESTを使用してOracle Access Governanceと統合するアイデンティティ対応システムに接続できるOCIファンクションを開発およびデプロイする必要があります。
汎用REST オーケストレーションされたシステムで使用するOCIファンクションを開発およびデプロイするには:
サンプル実装の設定
OCI Functionsの開発を支援するために、「汎用REST」 「オーケストレーションされたシステム」にサンプル実装が用意されています。 この例をダウンロードするには、「システムの選択」プロシージャに示されているプロシージャに従う必要があります。
ノート:
後続の詳細では、サンプル実装を解凍したディレクトリを<SampleBase>と呼びます。 これを使用して、前述のファイルを検索します。 たとえば:
サンプル実装をディレクトリ(たとえば、/myagfunctions)に解凍すると、ファイル<SampleBase>/grc-schema-template/src/main/resources/schema/config.yamlは/myagfunctions/grc-schema-template/src/main/resources/schema/config.yamlにあります。
- idm-agcs-serverless-getting-started-sample: これは、関数がどのように機能するかを示す、最小限のコードを使用した基本的でわかりやすいサンプルです。 このユース・ケースは、単一アプリケーションを「汎用REST」コネクタと統合する必要があり、最小限の構成が必要なお客様に最適です。 初期設定では、Oracle Identity Cloud Service (IDCS)アプリケーションを使用します。 このファンクションを構成およびデプロイする詳細なステップは、このディレクトリ内のREADME.mdファイルにあります。
- idm-agcs-serverless-idcs-application-sample: このサンプルでは、最小限の構成でIDCSアプリケーションの例に焦点を当てています。 この機能には、将来この機能内でアプリケーションを追加するためのフレームワークが含まれています。 構成およびデプロイメントのステップの詳細は、このディレクトリにあるREADME.mdファイルを参照してください。
- idm-agcs-serverless-azuread-application-sample: このサンプルは、最小限の構成でAzureADアプリケーションの例を必要とするお客様専用です。 これには、将来この関数内でアプリケーションを追加するためのフレームワークが含まれています。 このファンクションを構成およびデプロイする詳細なステップは、このディレクトリ内のREADME.mdファイルにあります。
- idm-agcs-serverless-multi-application-sample: このサンプルは、最小限の構成でIDCSとAzureADの両方のアプリケーションの例を必要とするお客様を対象としています。 この機能には、将来この機能内でアプリケーションを追加するためのフレームワークが含まれています。 このディレクトリのREADME.mdファイルは、このファンクションを構成およびデプロイするために必要なすべてのステップを提供します。
アプリケーションのファンクションの作成
参照テンプレートを参照し、次に定義した関数をアプリケーションに固有の値で構成することで、独自のRESTベースのアイデンティティ対応システムの関数を作成します。
表 - GRC-SCHEMA-TEMPLATE
| 項目 | 説明 |
|---|---|
| 入力 | 「オーケストレーションされたシステム」の名前 |
| 構成 |
構成済カスタムRESTアイデンティティ対応システムのリスト: たとえば、サンプル実装から:
カスタムRESTアイデンティティ対応システムにリンクされたオーケストレーションされたシステムのリスト: たとえば、サンプル実装から:
|
| 出力 |
次のエンティティ・タイプのいずれかを含む、1つ以上のエンティティ・スキーマを含むJSONスキーマ・テンプレート・ドキュメント:
サンプル実装の例については、「スキーマ出力」を参照してください。 |
表 - GRC-REQUEST-TEMPLATE
| 項目 | 説明 |
|---|---|
| 入力 |
|
| 構成 |
構成済カスタムRESTアイデンティティ対応システムのリスト: たとえば、サンプル実装から:
カスタムRESTアイデンティティ対応システムにリンクされたオーケストレーションされたシステムのリスト: たとえば、サンプル実装から:
|
| 出力 |
定義済エンティティおよび操作用のJSONリクエスト・テンプレート・ドキュメント: エンティティ
Operations
サンプル実装の例については、「リクエスト出力」を参照してください。 |
表 - GRC-RESPONSE-TEMPLATE
| 項目 | 説明 |
|---|---|
| 入力 |
|
| 構成 |
構成済カスタムRESTアイデンティティ対応システムのリスト: たとえば、サンプル実装から:
カスタムRESTアイデンティティ対応システムにリンクされたオーケストレーションされたシステムのリスト: たとえば、サンプル実装から:
|
| 出力 |
定義済エンティティおよび操作用のJSONレスポンス・テンプレート・ドキュメント: エンティティ
Operations
サンプル実装の例については、「レスポンス出力」を参照してください。 |
表 - GRC-TEST-TEMPLATE
| 項目 | 説明 |
|---|---|
| 入力 | 「オーケストレーションされたシステム」の名前 |
| 構成 |
構成済カスタムRESTアイデンティティ対応システムのリスト: たとえば、サンプル実装から:
カスタムRESTアイデンティティ対応アプリケーションにリンクされたオーケストレーションされたシステムのリスト: たとえば、サンプル実装から:
|
| 出力 |
JSONテスト・リクエスト・テンプレートのドキュメント: たとえば、サンプル実装から:
|
テスト・インフラ・モジュール・ガイド
リクエスト・テンプレートとレスポンス・テンプレートは複雑で、開発中にエラーが発生する可能性があります。 構成されたすべてのリクエスト・テンプレートとレスポンス・テンプレートを特定し、検証して、ビルド時間そのものの正確性を確保することが重要です。
この課題に対処するために、grc-test-infraモジュールが導入されました。 このモジュールには、構成された各リクエストおよびレスポンス・テンプレートに対応するテストが含まれています。 これらのテストは、ターゲット・アプリケーションのREST APIに対するリクエストおよび受信したレスポンスを検証することを目的としています。 これを実現するために、テストでは、モジュール内で開発されたREST APIコールを処理できる汎用リクエスト・プロセッサやレスポンス・プロセッサなどのユーティリティを利用します。 基本的に、ターゲット・アプリケーションのエンドポイントと内部的に相互作用し、構成されたレスポンス・テンプレートに基づいてレスポンスを検証します。
- 次に示す例に従って、テストを開発します:
grc-test-infraサンプル・テスト
package com.oracle.idm.agcs.grc.fn.test.infra; public class RequestResponseTemplateValidationTest { public void validateSearchUserAsIdentityRequestResponseTemplate() throws IOException, URISyntaxException, InterruptedException { // Get the configured Request template by passing the connectedSystem Name, entity name, and operation RequestTemplateOutput requestTemplate = getRequestTemplateOutput(connectedSystemName, UserAsIdentityEntity, Operation.SEARCH); // Get the configured Response template by passing the connectedSystem Name, entity name, and operation ResponseTemplateOutput responseTemplate = getResponseTemplateOutput(connectedSystemName, UserAsIdentityEntity, Operation.SEARCH); // Pass the required attributes in the request template by putting them in the attribute map HashMap<String, Object> attributesMap = new HashMap<>(); // Call the generic utility method to validate request and response template Map<String, Object> lastRecord = processAndValidateRequestAndResponseTemplate(requestTemplate, responseTemplate, attributesMap); // Retrieve the necessary data from the response for further processing userAsIdentityUid = ((ArrayList<String>) lastRecord.get("uid")).get(0); } }- テスト内の最初の行は、connectedSystemの名前、エンティティ名および操作を渡して、構成されたリクエスト・テンプレートを取得することです。
- 2行目は、同様のパラメータを使用して構成されたレスポンス・テンプレートを取得します。
- ユーザーは、必要な属性を属性マップに配置して、リクエスト・テンプレートに渡す必要があります。
- 次に、ユーザーは汎用ユーティリティ・メソッドprocessAndValidateRequestAndResponseTemplateを呼び出すだけで、APIを起動し、そのレスポンスを構成済のレスポンス・テンプレートとマッピングすることで、リクエスト・テンプレートとレスポンス・テンプレートの両方を内部的に検証します。
- 構成されたリクエスト・テンプレートおよびレスポンス・テンプレートが正しく構成されている場合、テストは合格します。そうしないと、失敗し、ユーザーは失敗理由を確認し、それに応じてテンプレートを修正できます。
サンプル・テスト・ファイルは、サンプル実装の次のロケーションにあります:
<SampleBase>/grc-test-infra/src/test/java/com/oracle/idm/agcs/grc/fn/test/infra/RequestResponseTemplateValidationTest.java - テストを実行する前に、次の前提条件を追加します:
- 環境の次の値で
<SampleBase>/grc-test-infra/src/test/resources/configファイルを更新します:[DEFAULT] user=<<USER>> fingerprint=<<FINGERPRINT>> key_file=<<PEM_FILE_RELATIVE_PATH>> tenancy=<<TENANCY>> region=<<REGION>> - 環境の次の値で
<SampleBase>/grc-test-infra/src/test/resources/config.propertiesファイルを更新します:connectedSystemName=<connectedSystemName> - API署名キーの秘密SSHキー(.pemファイル)を次のロケーションに追加します:
<SampleBase>/grc-test-infra/src/test/resources/oci_api_key.pem
- 環境の次の値で
- 開発したテストを実行し、関数を構築します:
- サンプル実装の
functionsディレクトリに移動します。 - ファンクションのコンパイルおよびパッケージ化
mvn clean package-DisDevMode=true
- サンプル実装の
ファンクションの構築およびデプロイ
- 機能を構築します。
cd <SampleBase> mvn package - OCIにファンクションをデプロイします。 各関数に対してステップを実行する必要があります
- grc-schema-template
- grc-request-template
- grc-response-template
- grc-test-template
cd <SampleBase>/grc-schema-template fn -v deploy --app <ApplicationName>
オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。
Oracle Supportへのアクセス
サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。 詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。