- Autonomous AI Databaseのデータベース・ツールを外部認証する - Oracle IAM編
- Autonomous AI Databaseのデータベース・ツールを外部認証する - Microsoft Entra ID編
- Autonomous AI Databaseのデータベース・ツールを外部認証する - Okta編
データベース名はSALESADB、ワークロード・タイプはレイクハウス、データベースのバージョンは19cです。
手元の作業ディレクトリは、salesadb_gcpとします。
GCPのアプリケーションに設定するリダイレクトURIの形式です。
https://[パブリック・アクセスURLのホスト部]/adb/auth/v1/connect/gcp/callback
Google Cloud Platformの構成
データベース・ツールの外部認証の構成
SALESADBに管理者ユーザーADMINで接続します。接続にはSQLclを使用します。
sql admin@salesadb_low
Google Cloud Platformによる外部認証を有効にします。クライアントIDとクライアントシークレトを、先ほどコピーした値に置き換えます。
BEGIN
DBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDP(
idp_name => 'GCP',
client_id => '<client-id>',
client_secret => '<client-secret>',
params => JSON_OBJECT(
'discovery_url' VALUE
'https://accounts.google.com/.well-known/openid-configuration'
));
END;
/
SQL> BEGIN
2 DBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDP(
3 idp_name => 'GCP',
4 client_id => '****************.apps.googleusercontent.com',
5 client_secret => '****************************************',
6 params => JSON_OBJECT(
7 'discovery_url' VALUE
8 'https://accounts.google.com/.well-known/openid-configuration'
9 ));
10 END;
11* /
PL/SQLプロシージャが正常に完了しました。
SQL>
設定を確認します。
select * from dba_list_idp;
SQL> select * from dba_list_idp;
IDP_ID IDP_NAME CLIENT_ID PARAMS
________________________________________________________________________________ ___________ ___________________________________________________________________________ ___________________________________________________________________________________
GCP-7532****-****-****-****-********3eb5-b9a9****-****-****-****-********ff3d GCP 4956********-***********************************.apps.googleusercontent.com {"discovery_url":"https://accounts.google.com/.well-known/openid-configuration"}
SQL>
以上で、外部アイデンティティ・プロバイダーとしてGoogle Cloud Platformが登録されました。
データベース・ユーザーとしてWKSP_APEXDEVを作成します。このユーザーは、Oracle APEXのワークスペースAPEXDEVのデフォルト・パーシング・スキーマとして使用します。
データベース・ユーザーWKSP_APEXDEVには、Google Cloud Platformのユーザーを割り当てます。GCPについては、データベース・ユーザーに割り当てられるのはユーザーに限定され、グループやロールを割り当てる機構は提供されていません。
create user wksp_apexdev identified globally as 'GCP_USER=<ユーザー名>';
alter user wksp_apexdev quota 25m on data;
grant create session to wksp_apexdev;
grant create table, create view, create procedure, create sequence to wksp_apexdev;
SQL> create user wksp_apexdev identified globally as 'GCP_USER=y_____@______.com';
User WKSP_APEXDEVは作成されました。
SQL> alter user wksp_apexdev quota 25m on data;
User WKSP_APEXDEVが変更されました。
SQL> grant create session to wksp_apexdev;
Grantが正常に実行されました。
SQL> grant create table, create view, create procedure, create sequence to wksp_apexdev;
Grantが正常に実行されました。
SQL>
スキーマWKSP_APEXDEVをREST有効にします。ORDS別名にapexdev(これがAPEXワークスペース名として扱われます)を割り当てます。
BEGIN
ORDS_ADMIN.ENABLE_SCHEMA(
p_enabled => TRUE,
p_schema => 'WKSP_APEXDEV',
p_url_mapping_type => 'BASE_PATH',
p_url_mapping_pattern => 'apexdev',
p_auto_rest_auth => FALSE);
END;
/
SQL> BEGIN
2 ORDS_ADMIN.ENABLE_SCHEMA(
3 p_enabled => TRUE,
4 p_schema => 'WKSP_APEXDEV',
5 p_url_mapping_type => 'BASE_PATH',
6 p_url_mapping_pattern => 'apexdev',
7 p_auto_rest_auth => FALSE);
8 END;
9* /
PL/SQLプロシージャが正常に完了しました。
SQL>
BEGIN
DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
type => 'OCI_IAM',
force => TRUE
);
END;
/
SQL> BEGIN
2 DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
3 type => 'OCI_IAM',
4 force => TRUE
5 );
6 END;
7* /
PL/SQLプロシージャが正常に完了しました。
SQL>
データベース・ツールへの接続
Google Cloud Platformで認証したユーザーにて、データベース・ツールに接続できました。
Oracle APEXへの接続
begin
apex_instance_admin.add_workspace(
p_workspace => 'APEXDEV',
p_primary_schema => 'WKSP_APEXDEV'
);
end;
/
begin
apex_util.set_workspace('APEXDEV');
apex_util.create_user(
p_user_name => upper('<Googleユーザー>'),
p_web_password => '<パスワード>',
p_developer_privs => 'ADMIN:CREATE:DATA_LOADER:EDIT:HELP:MONITOR:SQL',
p_email_address => '<Googleユーザー>',
p_default_schema => 'WKSP_APEXDEV',
p_change_password_on_first_use => 'N'
);
end;
/
commit;
exit















