アクセス管理用のDBMS_CLOUD

この項では、アクセス管理に使用するDBMS_CLOUDサブプログラムについて説明します。

前提条件

開発者は、Oracle Public CloudマルチクラウドまたはExadata Cloud@CustomerにデプロイされたAutonomous DatabaseでDBMS_CLOUDプロシージャを使用できます。

デプロイメントの選択肢に応じて、Amazon S3Azure Blob StorageおよびGoogle Cloud Storageサービス・プロバイダでDBMS_CLOUDプロシージャを使用するには、次の前提条件を満たす必要があります。

アウトバウンド接続は、次に説明するようにフリート管理者によってNATゲートウェイを使用して構成されている必要があります:
  • Oracle Cloud InfrastructureドキュメンテーションNAT Gatewayの作成の説明に従って、Autonomous Databaseリソースが存在するVirtual Cloud Network (VCN)でNATゲートウェイを作成します。
  • NAT gatewayを作成したら、Autonomous Databaseリソースが存在する各サブネット(VCN内)にルート・ルールおよびエグレス・セキュリティ・規則を追加して、これらのリソースがゲートウェイを使用してAzure ADインスタンスから公開キーを取得できるようにします:
    1. サブネットの「サブネットの詳細」ページに移動します。
    2. Subnet Information」タブで、サブネットの「Route Table」の名前をクリックして、その「Route Table Details」ページを表示します。
    3. 既存のルート・ルールの表で、次の特性を持つルールがすでに存在します:
      • 宛先: 0.0.0.0/0
      • ターゲット・タイプ: NAT Gateway
      • ターゲット: VCN内に作成したNATゲートウェイの名前

      このようなルールが存在しない場合は、「ルート・ルールの追加」をクリックし、これらの特性を持つルート・ルールを追加します。

    4. サブネットの「サブネットの詳細」ページに戻ります。
    5. サブネットの「セキュリティ・リスト」表で、サブネットのセキュリティ・リストの名前をクリックして、その「セキュリティ・リストの詳細」ページを表示します。
    6. サイド・メニューの「リソース」で、「エグレス・ルール」をクリックします。
    7. 既存のエグレス・ルールの表で、次の特性を持つルールがすでに存在します:
      • 宛先タイプ: CIDR
      • 宛先: 0.0.0.0/0
      • IPプロトコル: TCP
      • ソース・ポート範囲: 443
      • 宛先ポート範囲: すべて

      そのようなルールが存在しない場合は、「エグレス・ルールの追加」をクリックし、これらの特性を持つエグレス・ルールを追加します。

環境のHTTPプロキシ設定では、データベースがクラウド・サービス・プロバイダにアクセスできるようにする必要があります。

これらの設定は、Exadata Cloud@Customerインフラストラクチャの作成時にフリート管理者が定義します(コンソールを使用したExadata Database Service on Cloud@Customerのプロビジョニングを参照)。

ノート:

HTTPプロキシを含むネットワーク構成は、Exadataインフラストラクチャが「アクティブ化が必要」状態になるまで編集できます。いったんアクティブ化すると、それらの設定は編集できません。

すでにプロビジョニングされているExadataインフラストラクチャのHTTPプロキシを設定するには、My Oracle Supportでサービス・リクエスト(SR)が必要です。詳細は、My Oracle Supportでのサービス・リクエストの作成を参照してください。

DBMS_CLOUD アクセス管理用のサブプログラム

DBMS_CLOUDパッケージ内の資格証明管理のためのサブプログラム(資格証明の作成、削除および更新など)。

サブプログラム 説明

CREATE_CREDENTIALプロシージャ

このプロシージャは、クラウド・サービス資格証明をAutonomous Databaseに格納します。

DROP_CREDENTIALプロシージャ

このプロシージャは、既存の資格証明をAutonomous Databaseから削除します。

UPDATE_CREDENTIALプロシージャ

このプロシージャは、Autonomous Database内のクラウド・サービス資格証明属性を更新します。

CREATE_CREDENTIALプロシージャ

このプロシージャは、クラウド・サービス資格証明をAutonomous Databaseに格納します。

データのロードやクラウド内の外部データの問合せを行う場合、または他のケースでDBMS_CLOUDプロシージャをcredential_nameパラメータとともに使用する場合、格納されたクラウド・サービス資格証明を使用してクラウド・サービスにアクセスします。

構文

DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      username          IN VARCHAR2,
      password          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name IN VARCHAR2,
      user_ocid       IN VARCHAR2,
      tenancy_ocid    IN VARCHAR2,
      private_key     IN VARCHAR2,
      fingerprint     IN VARCHAR2);


Parameters

パラメータ 説明

credential_name

格納する資格証明の名前。credential_nameパラメータは、スペースやハイフンを使用できないOracleオブジェクトのネーミング規則に準拠している必要があります。

username

username引数とpassword引数の両方で、クラウド・サービス資格証明を指定します。各クラウド・サービスのusernameおよびpasswordの指定内容については、使用上のノートを参照してください。

password

username引数とpassword引数の両方で、クラウド・サービス資格証明を指定します。

user_ocid

ユーザーのOCIDを指定します。ユーザーのOCIDの取得の詳細は、テナンシのOCIDおよびユーザーのOCIDの取得場所を参照してください。

tenancy_ocid

テナンシのOCIDを指定します。テナンシのOCIDの取得の詳細は、テナンシのOCIDおよびユーザーのOCIDの取得場所を参照してください。

private_key

生成された秘密キーを指定します。パスフレーズを設定して生成された秘密キーはサポートされていません。パスフレーズなしで秘密キーを生成する必要があります。PEMフォーマットのキー・ペアの生成の詳細は、API署名キーの生成方法を参照してください。

fingerprint

フィンガープリントを指定します。生成された公開キーがユーザーのアカウントにアップロードされると、コンソールにフィンガープリントが表示されます。表示されたフィンガープリントをこの引数に使用します。詳細は、キーのフィンガープリントの取得方法およびAPI署名キーの生成方法を参照してください。

使用上のノート

  • この操作によって、資格証明が暗号化された形式でデータベースに格納されます。

  • ユーザーは、user_credentials表を問い合せることにより、自分のスキーマ内の資格証明を確認できます。

  • ADMINユーザーは、dba_credentials表を問い合せることにより、すべての資格証明を表示できます。

  • クラウド・サービス資格証明が変更されないかぎり、資格証明を作成する必要があるのは1回のみです。資格証明を一度格納したら、credential_nameパラメータを必要とするDBMS_CLOUDプロシージャに対して同じ資格証明名を使用できます。

  • このプロシージャはオーバーロードされています。キー・ベースの認証属性user_ocidtenancy_ocidprivate_keyまたはfingerprintのいずれかを指定すると、コールはOracle Cloud Infrastructure署名キー・ベースの資格証明であるとみなされます。

  • ALL_CREDENTIALSビューから資格証明をリストできます。たとえば、次のコマンドを実行して資格証明をリストします。

    SELECT credential_name, username, comments FROM all_credentials;

Oracle Cloud Infrastructure資格証明(認証トークン)

Oracle Cloud Infrastructureの場合、usernameはOracle Cloud Infrastructureのユーザー名です。passwordはOracle Cloud Infrastructureの認証トークンです。認証トークンの作業を参照してください。

たとえば次のようにします。

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@example.com',
    password => 'password' );
END;
/

OCI Object Storageへのコールを認証する場合は、認証トークン・ベースの資格証明を使用します。他のタイプのOracle Cloud Infrastructureクラウド・サービスへのコールには、Oracle Cloud Infrastructure署名キー・ベースの資格証明を使用します。

Oracle Cloud Infrastructure署名キー・ベースの資格証明

Oracle Cloud Infrastructure署名キー認証では、Oracle Cloud Infrastructure署名キー関連のパラメータ(user_ocidtenancy_ocidprivate_keyfingerprintなど)を使用します。

たとえば次のようにします。

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/

パスフレーズを設定して生成された秘密キーはサポートされていません。パスフレーズなしで秘密キーを生成する必要があります。詳細は、API署名キーの生成方法を参照してください。

Amazon Web Services (AWS)の資格証明

ソース・ファイルがAmazon S3に存在する場合、またはAWS APIをコールしている場合、usernameはAWSのアクセス・キーIDで、passwordはAWSのシークレット・アクセス・キーです。AWS Identity and Access Managementを参照してください。

Microsoft Azureの資格証明

ソース・ファイルがAzure Blob Storageに存在する場合、またはAzure APIをコールしている場合、usernameはAzureのストレージ・アカウント名で、passwordはAzureのストレージ・アカウント・アクセス・キーです。Azureストレージ・アカウントについてを参照してください。

Amazon S3互換の資格証明

サービス 資格証明情報

Google Cloud Storage

ソース・ファイルがGoogle Cloud Storageに存在する場合、またはGoogle Cloud Storage APIをコールしている場合は、デフォルトのGoogleプロジェクトを設定し、HMACキーを取得して、Google Cloud Storage S3互換URLを提供する資格証明を作成する必要があります。ユーザー名としてHMACキーIDを使用し、パスワードとしてHMACシークレットを使用します。

詳細は、プロジェクトおよびHMACキーを参照してください。

DROP_CREDENTIALプロシージャ

このプロシージャは、既存の資格証明をAutonomous Databaseから削除します。

構文

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

Parameters

パラメータ 説明

credential_name

削除する資格証明の名前。

UPDATE_CREDENTIALプロシージャ

このプロシージャは、指定したcredential_nameの属性を新しい値で更新します。

データのロードやクラウド内の外部データの問合せを行う場合、またはDBMS_CLOUDプロシージャをcredential_nameパラメータとともに使用する場合は、格納された資格証明を使用します。

構文

DBMS_CLOUD.UPDATE_CREDENTIAL (
    credential_name   IN VARCHAR2,
    attribute         IN VARCHAR2,
    value             IN VARCHAR2);

Parameters

パラメータ 説明

credential_name

更新する資格証明の名前。

attribute

更新する属性の名前。

ユーザー名/パスワード・タイプの資格証明の場合、有効なattribute値はUSERNAMEおよびPASSWORDです。

詳細は、CREATE_CREDENTIALプロシージャに関する項を参照してください。

value

指定した属性の新しい値。

使用上のノート

  • ユーザー名の値では大文字と小文字が区別されます。二重引用符や空白を含めることはできません。

  • ADMINユーザーは、dba_credentialsを問い合せると、すべての資格証明を表示できます。

  • クラウド・サービス資格証明が変更されないかぎり、資格証明を作成する必要があるのは1回のみです。資格証明を一度格納したら、credential_nameパラメータを必要とするDBMS_CLOUDプロシージャに対して同じ資格証明名を使用できます。

  • ALL_CREDENTIALSビューから資格証明をリストできます。たとえば、次のコマンドを実行して資格証明をリストします。

    SELECT credential_name, username, comments FROM all_credentials;

BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'OBJ_STORE_CRED',
     attribute => 'PASSWORD',
     value => 'password'); 
END;
/
BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'ARN_CRED',
     attribute => 'aws_role_arn',
     value => 'NEW_AWS_ARN'); 
END;
/