ロール・ベースのアクセス制御IAM接続
このトピックでは、JSON Web Token (JWT)カスタム・クレームを使用してロール・ベースのアクセス制御を可能にするドメイン統合アプリケーションを準備する方法に関するIT管理の手順について説明します。これにより、ドメイン・ユーザーはスキーマ・パスワードのかわりにドメイン資格証明を使用してデータベースにログインできます。
この章では、ドメイン・ユーザーがスキーマ固有のパスワードを使用するのではなく、ドメイン資格証明を使用してデータベースに対して認証できるようにします。
- ユーザーのカスタム属性を作成します。
- カスタム・ロールの割当
- ドメイン統合アプリケーションの作成
- カスタム要求の定義
- Autonomous DatabaseスキーマのIAMログインの有効化
- 接続ファイルの作成
この章では、
Default
ドメインを使用しますが、プリファレンスの任意のドメインを選択できます。
ユーザーのカスタム属性を作成します。
- 「アイデンティティ」→「ドメイン」→「デフォルト」にナビゲートします。「スキーマ管理」タブをクリックし、「ユーザー属性」を選択します。
- 「ユーザー属性」の下の「属性の追加」をクリックします。
- 「属性の追加」ダイアログで、次のフィールドを指定します:
- 表示名: ORDS RBAC
- 名前:rbac_ords
- 説明:ORDSのロール・ベースのアクセス制御
- データ型: 文字列配列
残りのフィールドはデフォルトのままにしておくことができます。
「追加」をクリックします。カスタム属性を追加しました。
- 検索フィールドに「カスタム」と入力して、新しく追加された属性を検索します。リストにORDS RBAC属性が表示されます。
「属性の編集」をクリックします。
- 「FQN」(完全修飾名)の値をコピーしてメモします。
この例では、FQNはurn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ordsです。
カスタム・ロールの割当
- 「アイデンティティ」→「ドメイン」→「デフォルト」にナビゲートします。「ユーザー管理」タブをクリックし、表示されるユーザーのリストからユーザー名を選択します。
「ユーザーの編集」をクリックします。「その他の情報」フィールドにスクロールし、「ORDS RBAC」の下に「SQL Developer、 SODA Developer」と入力します。
ORDSロールの詳細は、「Oracle REST Data Servicesのユーザー・ロールについて」のこの章を参照してください。
ロールを追加したら、「変更の保存」をクリックします。
ドメイン統合アプリケーションの作成
サインイン時にJWTトークンを発行するドメイン内の統合アプリケーションを開発します。
- 「アイデンティティ」→「ドメイン」→「デフォルト」にナビゲートします。「統合アプリケーション」タブをクリックし、「アプリケーションの追加」を選択します。
- 「機密アプリケーション」をクリックし、「ワークフローの起動」を選択します。
- 「機密アプリケーションの追加」ダイアログで、次のフィールドを指定します:
- 名前: 機密アプリケーションの名前を入力します。たとえば、Spreadsheet-Addin RBACです。
- 説明: 説明を入力します。たとえば、スプレッドシート・アドイン・ロール・ベースのアクセス制御のための統合アプリケーションです。
「送信」をクリックします。
新しく追加されたSpreadsheet-Addin RBACアプリケーション・ページを表示します。
- 「Spreadsheet-Addin RBAC」ページのOAuth構成タブで、「OAuth構成の編集」をクリックします。
- 「リソース・サーバー構成」で、「このアプリケーションをリソース・サーバーとして今すぐ構成する」を選択します。
- 「OAuthで保護する必要があるアプリケーションAPIの構成」で、アクセス・トークンの有効期限(秒)として「3600」を選択します。
- 「プライマリ・オーディエンス」フィールドに、ssaddin/と入力します。
- 「スコープの追加」をクリックし、rbac「スコープ」を追加します。
- 「クライアント構成」で、次のフィールドを指定します:
- 「今すぐこのアプリケーションをクライアントとして構成」を選択します。
- 「許可された権限付与タイプ」で「暗黙的」を選択します。
- 「リダイレクトURL」フィールドに次の値を入力します:
https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html
- 「ログアウト後のURL」フィールドに次の値を入力します:
https://static.oracle.com/cdn/spreadsheet/red-4/redirector.html
「送信」をクリックします。ノート
アプリケーションをアクティブ化していることを確認します。
カスタム要求の定義
JWT内にユーザー・ロールを含めるには、最初のセクションで確立されたカスタム属性をカスタム・クレームを使用してJWTにマップする必要があります。
これを実現するには、追加の一時的な統合アプリケーションを作成し、カスタム・クレームを添付する必要があります。
アイデンティティ・ドメイン統合アプリケーションの作成
- 「アイデンティティ」→「ドメイン」→「デフォルト」にナビゲートします。
- 「統合アプリケーション」タブをクリックし、「アプリケーションの追加」を選択します。
- 「機密アプリケーション」をクリックし、「ワークフローの起動」を選択します。
- アプリケーションの名前を入力します: アイデンティティ・ドメイン統合アプリケーション
- 「Description(摘要)」: これはドメイン統合アプリケーションです。
「送信」をクリックします。
- アイデンティティ・ドメイン統合アプリケーション・ページで、OAuth構成タブを選択します。
- 「リソース・サーバー構成」で「OAuth構成の編集」をクリックします。「OAuth構成の編集」ダイアログで、次のフィールドを指定します:
- 「クライアント構成」で、デフォルト値「このアプリケーションをクライアントとして今すぐの構成します」を選択します。
- 「認可」で、「クライアントの資格証明」を選択します。残りの構成はデフォルトの状態のままにします。
- 「アプリケーション・ロールの追加」を選択します。
- 「アプリケーション・ロールの追加」ダイアログで、「Identity Domain Administrator」をクリックし、「追加」を選択します。
- アプリケーション・ロールを追加した後、「送信」をクリックします。
- アプリケーションをアクティブ化します。
JWTトークンの新規要求の作成
Identity Domain Administratorアプリケーションの新しいアクセス・トークンを取得するには、CLIENT ID
、CLIENT SECRET
およびDOMAIN URL
が必要です。
前のステップで作成したドメイン統合アプリケーションのCLIENT ID
およびCLIENT SECRET
があります。
DOMAIN URL
は、ドメイン・ページの「ドメイン情報」にあります。
次のコマンドを実行し、(CLIENT ID)
、(CLIENT SECRET)
および(DOMAIN URL)
の値を値に置き換えます。
export ACCESS_TOKEN=$(curl -s -i -u"(CLIENT ID):(CLIENT SECRET)" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST (DOMAIN URL)/oauth2/v1/token -d
"grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" | tail -n +1 | grep -o
'"access_token":"[^"]*' | cut -d'"' -f4)
Client ID
: 123a1234e1234567aa12345a1abcdefg1Client Secret
: idcscs-12a1a123-a123-1234-1234-e1a05aabc123Domain URL
: https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443
export ACCESS_TOKEN=$(curl -s -i -u"123a1234e1234567aa12345a1abcdefg1: idcscs-12a1a123-a123-1234-1234-e1a05aabc123" -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" --request POST https://idcs-a123ab1ab12a4bb99a9aa9ab99aabbb9.identity.oraclecloud.com:443/oauth2/v1/token -d "grant_type=client_credentials&scope=urn:opc:idm:__myscopes__" |
tail -n +1 | grep -o '"access_token":"[^"]*' | cut -d'"'
-f4)
echo $ACCESS_TOKEN
次のイメージは、前述のコマンドがBashシェルでどのように表示されるかを示しています。
英数字を含む複数の行(10を超える行)で構成される出力が表示されます。
(ROLE CLAIM NAME)
を、urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ordsとして(MODIFIED FQN)
を指定して次のコマンドを実行します。
ステップ1のFQN
を使用して、最後の「: 」を「.」に置き換えます。
たとえば、ステップ1のFQN
は次のようになります。
urn:ietf:params:scim:schemas:idcs:extension:custom:User:rbac_ords
したがって、MODIFIED FQN
は次のようになります。
urn:ietf:params:scim:schemas:idcs:extension:custom:User.rbac_ords
curl -i -X POST (DOMAIN URL)/admin/v1/CustomClaims -H"Cache-Control: no-cache" -H"Accept:application/json" -H"Content-Type:application/json" -H"Authorization: Bearer $ACCESS_TOKEN" -d '{
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:CustomClaim"
],
"name": "(ROLE CLAIM NAME)",
"value": "$user.(MODIFIED FQN).*",
"expression": true,
"mode": "always",
"tokenType": "AT",
"allScopes": false,
"scopes": [
"ssaddin/rbac"
]
}'
Domain URL
を前述のコード内の実際の値に置き換えます。
次の出力が表示されます:HTTP/1.1 201 Created
。
Autonomous DatabaseスキーマのRBAC IAMログインの有効化
- SQLワークシートの「ナビゲータ」タブで、「スキーマ」ドロップダウン・リストから
ORDS_METADATA
を選択します。 - 「オブジェクト・タイプ」ドロップダウン・リストから
Packages
を選択します。 - 「検索」フィールドに
ORDS_SECURITY
と入力します。検索ファンクションは、ORDS_SECURITY
で始まるすべてのエントリを取得します。 ORDS_SECURITY
パッケージを展開します。CREATE_JWT_PROFILE
を右クリックし、RUN
をクリックします。これにより、RUN CODE
ダイアログが開きます。「実行コード...」ダイアログで、次のフィールド値を指定します。- P_ISSUER- https://identity.oraclecloud.com/。このフィールドはnull以外の値である必要があり、1つのカンマで入力する必要があります。
- P_AUDIENCE-ssaddin/。このフィールドはnull以外の値である必要があります。
- P_JWK_URL- DOMAIN URLに/admin/v1/SigningCert/jwkを追加します。https://で始まるnull以外の値で、認可サーバーによって提供された公開検証キーをJSON Web Key (JWK)形式で指定する必要があります。
「ドメインURL」は、OCIコンソールの「アイデンティティとセキュリティ」ナビゲーション・メニューの「ドメイン」メニューにある「ドメイン情報」タブで表示できます。
- P_DESCRIPTION- このプロファイルの説明を入力します。たとえば、RBAC JWTデモの合流点です。
- P_ALLOWED_AGE - 「0」
- P_ALLOWED_SKEW - 「0」
- P_ROLE_CLAIM_NAME- 「ssaddin.role」
「ワークシートにコードを挿入」をクリックします。
プロシージャを実行します。
出力パネルに「PL/SQL procedure successfully completed」が表示されます。
接続ファイルの作成
-
「接続」ペインのヘッダーにある「追加」ボタンをクリックして、接続を追加します。「新規接続を追加」ダイアログ・ボックスが開きます。
- 「新規接続を追加」ダイアログ・ボックスで、次のフィールドを指定します:
- 接続先名: 接続の名前を入力します。
- Autonomous DatabaseのURL: 接続先のAutonomous DatabaseのURLを入力します。Autonomous DatabaseのWeb UIからURL全体をコピーします。たとえば、「https://<hostname>-<databasename>.adb.<region>.oraclecloudapps.com/」というリンクを入力またはコピーしてデータベースに接続します。
- スキーマ名: Autonomous DatabaseスキーマのIAMログインの有効化に使用するスキーマと同じスキーマを入力します。
- 接続タイプの選択: OCI IAM
- ドメインURL: ドメイン情報タブから「ドメインURL」を入力します。
- 「RBAC」IAMタイプを選択します。
- IAMスコープ:
ssaddin/rbac
接続の作成後、このドメインの他のユーザーと共有できます。
親トピック: データ分析ツール