データベース・ツールでの外部認証の使用

Autonomous AI Databaseは、Oracle Cloud Infrastructure IAM、Microsoft Entra ID、Google Cloud Platform、AWS Cognito、Oktaなどのアイデンティティ・プロバイダを使用して、データベース・ツールおよび関連ツールに外部認証サポートを拡張します。これにより、グローバルに識別されたデータベース・ユーザーの従来のパスワードを使用せずに、データベース・アクションへのセキュアなシングル・サインオン(SSO)アクセスが可能になります。

データベース・アクションを使用した外部認証について

データベース・セッションに使用されるものと同じ外部IDを使用して、ツール・インタフェースに対して認証できます。データベース・ツールのアイデンティティ・プロバイダ構成は、データベースでの外部認証の有効化とは別です。Autonomous AI Databaseは、認証に必要なアイデンティティ・プロバイダ構成を、暗号化されたクライアント・シークレットなどの機密値とともにデータベースに格納します。この構成には、アイデンティティ・プロバイダ名、クライアントID、クライアント・シークレットおよびOpenID Connect検出URLが含まれます。

サインイン中、ツールはこの構成を使用して、適切なアイデンティティ・プロバイダにリダイレクトし、外部で認証されたユーザーに対して発行された認証トークンを検証します。

ノート

ノート: Autonomous AI Databaseでは、Database Actions - SQL DeveloperおよびData Studioの次の組込みツールの外部認証がサポートされています。データベースでは、APEXやOracle Machine Learningなどのツールの外部認証はサポートされていません。

前提条件

ADMIN権限を持つユーザー・アカウントを使用して、Autonomous AI Databaseインスタンスにアクセスできることを確認します。

データベース・ツールで外部認証を使用するには、次のことが必要です。

  • データベース・アクションの外部認証の有効化
  • グローバル・データベース・ユーザーの作成
  • アイデンティティ・プロバイダ情報をデータベースに登録します
  • 外部資格証明を使用したデータベース・アクションへのアクセス

サポートされているすべてのプロバイダについて、前述のステップに従う必要があります。プロバイダ固有の違いは、データベース・レベルの有効化プロシージャ、グローバル・ユーザー・マッピング構文、およびデータベース・ツールのアイデンティティ・プロバイダ・メタデータをDBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDPに登録する必要があるかどうかに制限されます。

提供者のステップ要件

次の表を使用して、詳細なステップを実行する前に適用するプロバイダ設定ステップを決定します。

プロバイダ 外部の認証の有効化 IDPの登録
OCI IAM 有効にしない場合は必須です 不要
Microsoft Entra ID(Azure) 必須 必須
AWSコグニート IDPで構成 必須
Google Cloud Platform (GCP) IDPで構成 必須
Okta IDPで構成 必須

プロバイダ固有のノート

プロバイダ ノートと例外
OCI IAM DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATIONtype => 'OCI_IAM'とともに使用します。OCI IAMに対してCREATE_IDPを実行しないでください。IAM_PRINCIPAL_NAMEまたはIAM_GROUP_NAMEを使用してユーザーまたはグループをマップします。
Microsoft Entra ID(Azure) データベース構成ステップを実行する前に、Microsoft Entra ID管理者がAzure側の設定を完了する必要があります。Autonomous AI DatabaseインスタンスをMicrosoft Entra IDテナンシに登録し、アプリケーションID URIおよびスコープを公開し、共有マッピングを使用する場合はアプリケーション・ロールを作成し、必要なユーザー、グループまたはアプリケーションを割り当てます。Autonomous AIデータベースでのMicrosoft Entra ID認証の有効化を参照してください。次に、DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATIONtype => 'AZURE_AD'およびテナント/アプリケーション値とともに使用します。テナント固有のOpenID Connect検出URLを使用して、データベース・ツール・メタデータをCREATE_IDPに登録します。ユーザー、クライアントまたはアプリケーション・ロールをAZURE_USERまたはAZURE_ROLEでマップします。
AWSコグニート AWSでCognitoユーザー・プール、アプリケーション・クライアント、ドメインおよびユーザーまたはグループ・メンバーシップを構成します。Cognitoユーザー・プールOpenID Connect検出URLを使用して、データベース・ツール・メタデータをCREATE_IDPに登録します。ユーザーをAWS_USERでマップし、共有ロール・マッピングをAWS_ROLEでマップします。
Google Cloud Platform (GCP) Google CloudでOAuth同意画面、OAuthクライアント資格証明、リダイレクトURIおよびユーザー割当てを構成します。Google OpenID Connect検出URLを使用して、データベース・ツール・メタデータをCREATE_IDPに登録します。GCP_USERを使用してユーザーをマップします。
Okta アプリケーションを、サインインする必要があるOktaユーザーまたはグループに割り当てます。グループマッピングを使用する場合は、グループスコープとグループ要求を認可サーバーで公開します。適切なOkta OpenID Connect検出URLを使用して、データベース・ツール・メタデータをCREATE_IDPに登録します。ユーザーをOKTA_USERでマップし、グループをOKTA_GROUPでマップします。

データベース・アクションの外部認証の有効化

ADMINユーザーとして、Autonomous AI Databaseで外部認証を有効にします。これにより、データベースは、サポートされている外部アイデンティティ・プロバイダを介してユーザーを認証できます。

ノート

ノート:データベース・アクションで外部認証を使用するオプションは、Autonomous AIデータベースで外部認証が有効になっている場合にのみ使用できます。外部認証プロバイダが有効になっていない場合、オプションは表示されません。

外部認証を有効にする前に、外部認証スキームがすでに有効になっているかどうかを確認します。

SELECT name, value
FROM v$parameter
WHERE name = 'identity_provider_type';

identity_provider_typeOCI_IAMまたはAZURE_ADの場合、そのプロバイダでは外部認証がすでに有効になっており、データベースの外部認証を変更する必要はありません。

データベース・ツールで外部認証を使用するには、グローバルに識別されたデータベース・ユーザーを作成または検証し、アイデンティティ・プロバイダ情報をDBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDPに登録し、必要なデータベース・アクションおよびWebアクセス権限を指定することで、データベース・ツールの構成を完了する必要があります。

別の外部認証プロバイダが有効になっている場合は、現在の外部認証構成を置き換える予定がないかぎり、force => TRUEを使用しないでください。

force => TRUEを使用すると、現在有効な外部認証プロバイダが無効になり、それに依存する既存のユーザーまたはアプリケーションが中断する可能性があります。

詳細は、Autonomous AI DatabaseでのIdentity and Access Management (IAM)認証の有効化を参照してください。

ノート

ノート:一度に有効にできる外部認証プロバイダは1つのみです。

例: OCI IAMによる外部認証の有効化

ADMINユーザーとして、Autonomous AI DatabaseでOracle Cloud Infrastructure IAM外部認証を有効にできます:

BEGIN
   DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
      type  => 'OCI_IAM',
      force => TRUE
   );
END;
/

このDBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATIONプロシージャは、データベースのOracle Cloud Infrastructure IAM外部認証を有効にします。アイデンティティ・プロバイダ名、クライアントID、クライアント・シークレットまたはOpenID Connect検出URLを使用しません。

ENABLE_EXTERNAL_AUTHENTICATIONプロシージャは、サポートされている外部アイデンティティ・プロバイダを信頼するようにデータベースを構成します。この手順は、使用するアイデンティティ・プロバイダによって異なります。

例: Microsoft Entra IDを使用した外部認証の有効化

この例を実行する前に、AzureでMicrosoft Entra ID設定を完了し、Azureアプリケーション登録からテナントID、アプリケーションIDおよびアプリケーションID URIを収集します。アプリケーション・ロール・マッピングを使用する場合は、アプリケーション・ロールを作成し、Microsoft Entra IDで必要なユーザー、グループまたはアプリケーションを割り当てます。Microsoft Entra IDテナンシへのOracle AI Databaseインスタンスの登録およびMicrosoft Entra IDでのアプリケーション・ロールの管理を参照してください。

ADMINユーザーとして、Autonomous AI DatabaseでMicrosoft Entra ID外部認証を有効にします:

BEGIN
  DBMS_CLOUD_ADMIN.ENABLE_EXTERNAL_AUTHENTICATION(
      type   => 'AZURE_AD',
      params => JSON_OBJECT(
                  'tenant_id' VALUE 'tenant-id',
                  'application_id' VALUE 'application-id',
                  'application_id_uri' VALUE 'application-id-uri'),
      force  => TRUE
  );
END;
/

Database ActionsやData Studioなどのツールでは、外部で認証されたグローバル・データベース・ユーザーに適切なデータベース・ロールが付与され、Webアクセスが有効になっていることを確認します。

ノート

ノート:使用するプロバイダに対して外部認証がすでに有効になっている場合は、ENABLE_EXTERNAL_AUTHENTICATIONを再実行しないでください。CREATE_IDPは、Microsoft Entra IDなどのOpenID Connectメタデータの登録を必要とするプロバイダのアイデンティティ・プロバイダ・メタデータを登録する場合にのみ使用し、ENABLE_EXTERNAL_AUTHENTICATIONを慎重に使用してください。Oracle Cloud Infrastructure IAMの場合、外部認証を有効にし、グローバルに識別されたデータベース・ユーザーを構成します。また、アイデンティティ・プロバイダ情報をデータベースに登録する必要はありません。forceパラメータを使用すると、既存の外部認証構成を中断できます。

グローバル・データベース・ユーザーの作成

外部認証を有効にした後、IDENTIFIED GLOBALLYであるユーザーを作成します。グローバルに識別されるユーザーは、Autonomous AI Databaseで作成され、データベース・パスワードではなく外部アイデンティティ・プロバイダ・プリンシパルにマップされるデータベース・ユーザーまたはスキーマです。外部認証に対して有効にしたのと同じアイデンティティ・プロバイダに対してグローバル・データベース・ユーザーを作成します。権限および認可は、データベース内の権限についてグローバル・データベース・ユーザーに付与され、DBActionsにログオンするには、ORDSのグローバル・データベース・ユーザーを有効にして最小限のセッションで作成権限を付与する必要があります。

次の例を実行して、それぞれのアイデンティティ・プロバイダのプリンシパルにマップされたグローバル・データベース・ユーザーを作成します。

例: OCI IAMのグローバル・データベース・ユーザーの作成

Oracle Cloud Infrastructure IAMプリンシパルにマップされたグローバル・データベース・ユーザーを作成します:

CREATE USER adam_scott
IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=adamscott';

データベース・ユーザーadam_scottへのアクセス権を付与します。

GRANT CREATE SESSION TO adam_scott;

共有データベース・ユーザーをOracle Cloud Infrastructure IAMグループにマップすることもできます:

CREATE USER sales_group
IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=db_sales_group';

次の文を実行して、マップされたsales_groupデータベース・ユーザーがデータベースにサインインできるようにします。

GRANT CREATE SESSION TO sales_group;

例: Microsoft Entra ID用のグローバル・データベース・ユーザーの作成

Microsoft Entra IDユーザーにマップされたグローバル・データベース・ユーザーを作成します。

CREATE USER peter_fitch
IDENTIFIED GLOBALLY AS 'AZURE_USER=peter.fitch@example.com';

次の文を実行して、ユーザーpeter_fitchにデータベース権限またはロールを付与します。

GRANT CREATE SESSION TO peter_fitch;

共有データベース・ユーザーをMicrosoft Entra IDアプリケーション・ロールにマップすることもできます。

CREATE USER dba_azure
IDENTIFIED GLOBALLY AS 'AZURE_ROLE=AZURE_DBA';

データベース接続を確立するためのユーザー権限を付与します。

GRANT CREATE SESSION TO dba_azure;

排他マッピングを使用して、データベース・ユーザーを単一の外部プリンシパルにマップするか、共有マッピングを使用して、データベース・ユーザーを複数のプリンシパルを表すことができる外部グループまたはロールにマップする必要があります。

プロバイダ グローバル・ユーザー・マッピングの例: 排他マッピングと共有マッピング
OCI IAM 排他的マッピング:
IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=<iam-user>'
共有マッピング:
IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=<iam-group>'
Microsoft Entra ID(Azure) 排他的マッピング:
IDENTIFIED GLOBALLY AS 'AZURE_USER=<user-principal-name>'
共有マッピング:
IDENTIFIED GLOBALLY AS 'AZURE_ROLE=<app-role>'
AWSコグニート 排他的マッピング:
IDENTIFIED GLOBALLY AS 'AWS_USER=<aws-user>'
共有マッピング:
IDENTIFIED GLOBALLY AS 'AWS_ROLE=<aws-role>'
Google Cloud Platform (GCP) 排他的マッピング:
IDENTIFIED GLOBALLY AS 'GCP_USER=<gcp-user>'
共有マッピング:
使用できません。
Okta 排他的マッピング:
IDENTIFIED GLOBALLY AS 'OKTA_USER=<okta-user>'
共有マッピング:
IDENTIFIED GLOBALLY AS 'OKTA_GROUP=<okta-group>'

ノート

ノート:グローバル・ユーザーの場合、次の例はOracle Cloud Infrastructure IAMを対象としています。他のアイデンティティ・プロバイダの場合、ドキュメントでプロバイダ固有のマッピング構文を使用します。

データベース・アクションでユーザーを使用するには、セッションを作成し、必要なデータベース・アクション権限を付与し、スキーマに対してOracle REST Data Services (ORDS)を有効にして、ユーザーにWebアクセス権があることを確認する必要があります。

例: グローバルに識別されたデータベース・ユーザーのORDSの有効化

GRANT CREATE SESSION TO IDP_SHARED;
BEGIN
    ORDS_ADMIN.ENABLE_SCHEMA(
        p_enabled             => TRUE,
        p_schema              => 'idp_shared',
        p_url_mapping_type    => 'BASE_PATH',
        p_url_mapping_pattern => 'idp_shared',
        p_auto_rest_auth      => FALSE);
END;

ノート

ノート:マップされたユーザーがデータベース・アクションのData Studioツール・スイートにアクセスできるようにするには、DWROLEを付与します。

データベースへのアイデンティティ・プロバイダ情報の登録

グローバルに認証されたユーザーを作成した後、管理者はDBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDPを使用してアイデンティティ・プロバイダをデータベースに登録する必要があります。

この登録には、OpenID Connectトークン検証に必要なアイデンティティ・プロバイダ名、クライアントID、クライアント・シークレットおよび検出メタデータが格納されます。アイデンティティ・プロバイダを登録すると、データベース・アクションやData Studioなどのデータベース・ツールで、サポートされている外部アイデンティティ・プロバイダを介してユーザーを認証できます。

CREATE_IDPプロシージャを使用して、外部認証用の新しいアイデンティティ・プロバイダを作成します。アイデンティティ・プロバイダを登録する必要があるのは、データベースに対して1回のみです。

Oracle Cloud Infrastructure IAMのアイデンティティ・プロバイダ情報を登録する必要はありません。外部認証を有効にし、Oracle Cloud Infrastructure IAMに対してグローバルに識別されたデータベース・ユーザーのみを構成します。

この項のアイデンティティ・プロバイダ登録ステップは、サポートされている他の外部プロバイダに適用されます。

例: 外部プロバイダの一般的なCREATE_IDPの例

サポートされているアイデンティティ・プロバイダ情報をデータベース・ツール認証に登録します:

BEGIN
   DBMS_CLOUD_FUNCTION_ADMIN.CREATE_IDP(
      idp_name      => '<IDP_NAME>',
      client_id     => '<client-id>',
      client_secret => '<client-secret>',
      params        => JSON_OBJECT(
                         'discovery_url' VALUE '<openid-configuration-url>'));
END;
/

パラメータおよび説明の詳細は、「CREATE_IDPプロシージャ」を参照してください。

UPDATE_IDPプロシージャを使用して既存のアイデンティティ・プロバイダ・エントリを更新し、DELETE_IDPプロシージャを使用してデータベースから既存のアイデンティティ・プロバイダ登録を削除することもできます。

外部認証を使用したデータベース・アクションへのアクセス

アイデンティティ・プロバイダが登録され、外部認証が有効になっている場合、データベース・アクションおよびその他のサポートされているツールにSSOでサインイン・オプションが表示されます。SSOでサインインとは、構成されたアイデンティティ・プロバイダを介して外部認証されたグローバル・データベース・ユーザーとしてデータベース・アクションにサインインすることを意味します。アクティブなアイデンティティ・プロバイダ・セッションがまだない場合は、Database ActionsによってOracle Cloud Infrastructure IAMまたはMicrosoft Entra IDにリダイレクトされ、認証が完了します。

外部で認証されたグローバル・データベース・ユーザーとしてサインインするには:

  1. Database ActionsのURLを開きます。

  2. SSOでサインインを選択します。

  3. Oracle Cloud Infrastructure IAMやMicrosoft Entra IDなど、構成されたアイデンティティ・プロバイダを使用して認証されます。

  4. 認証が成功すると、マップされたグローバル・データベース・ユーザーのデータベース・アクションが開きます。

ノート

ノート: Oracle Cloud Infrastructure ConsoleからADMINとしてデータベース・アクションにアクセスすることは、別のフローです。必要なOracle Cloud Infrastructure IAMポリシーにより、ADMINとしてコンソールからデータベース・アクションを開くことができます。これは、外部で認証されたグローバル・データベース・ユーザーとしてDatabase Actionsに直接サインインすることとは異なります。外部認証済ユーザーがサインアウトすると、データベース・アクションはデータベース・アクションのサインイン・ページに戻ります。