前提条件

IAM認証を使用するデータベース・ツール接続を作成する前に、次の前提条件が満たされていることを確認してください。

データベースの前提条件

IAM認証を使用するようにデータベース・ツール接続を構成する前に、次のデータベース要件が満たされていることを確認してください:

ノート

ADBの場合、IAM認証の前提条件(セキュア/TLS接続など)はデータベース・ツール・サービスにすでに構成されています。ほとんどの場合、IAMポリシーおよびデータベース・ユーザー・マッピング・ステップに直接移動できます。

ADB以外のOracle Databases (Exadataやベース・データベース・サービスなど)では、IAMトークン接続が機能するための前提条件(TCPS/TLSサーバー認証、ウォレット/証明書など)を最初に確認および構成する必要があります。Oracle DatabaseでのIAM認証の前提条件を参照してください

サポートされているデータベース・バージョン

  • サポートされているOracle Database-as-a-Service (DBaaS)環境は次のとおりです。

    • Oracle Autonomous Database(ADB)
    • Oracle Exadata Database Service
    • Oracle Base Database Service
  • Oracle Databaseリリース19c、バージョン19.16以降が必要です。

  • Oracle Database 21cクライアントは、IAMトークンベース認証を完全にサポートしていません。必要なIAMデータベース・トークン機能をサポートするクライアント・バージョンを使用します。Oracle DatabaseでのIAM認証Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM) SSOトークン・ベース認証の項を参照してください。

TLS (TCPS)接続およびサーバー認証

IAM認証には、データベースへのセキュアな接続が必要です:

  • データベース・ツール・サービスからデータベースにTCPSを使用します。「接続の作成」の場合は、このオプションを選択します。
  • データベースのTLSサーバー認証を構成します。ADB以外の環境では、特定のデータベース・サービスおよび構成の要件に従って、TLSウォレットおよび関連する証明書をWALLET_ROOTに設定してください。

詳細は、IAMトークンを使用するためのTLSの構成を参照してください。

Oracle DatabaseのIAM認証の有効化

IAM認証を有効にするには:

  1. 特権データベース・ユーザー(SYSADMINなど)でパスワード認証を使用してデータベース・ツール接続を作成します。接続を作成するには、「接続の作成」を参照してください。

  2. データベース・インスタンスの外部認証を構成します。

    1. データベース・ツール接続を選択します。
    2. 「アクション」を展開し、「外部認証の構成」を選択します。
    3. 「外部認証タイプ」で、「OCI_IAM」を選択します。
    4. 構成を保存するには、「更新」をクリックします。

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

IAM認証では、データベースでIAMプリンシパル(ユーザーまたはグループ)をデータベース・ユーザー(スキーマ)にマップできるように、データベースにグローバル・ユーザー・マッピングが必要です。

排他的マッピング

排他マッピングは、IAMユーザーとデータベース・スキーマ間の1対1マッピングが必要な場合に使用します。

CREATE USER scott IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=<iam-user-name-or-identifier>';
GRANT CREATE SESSION TO scott;

ここで、<iam-user-name-or-identifier>は、IAMユーザーの「データベース・ユーザー名」属性を参照します。IAMユーザーがデータベース・ユーザー名を使用できない場合、IAMユーザーの標準ユーザー名がフォールバックとして使用されます。

データベース・ユーザー名およびIAM標準ユーザー名の詳細は、次を参照してください:

共有マッピング

複数のIAMユーザー(IAMグループのメンバー)が共有スキーマとして接続する場合は、共有マッピングを使用します。

CREATE USER scott IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=<iam-group-name>';
GRANT CREATE SESSION TO scott;

ここで、<iam-group-name>は、グループのIAMで定義されているIAMグループ名の値を示します。このIAMグループのメンバーであるすべてのIAMユーザーは、共有データベース・ユーザーとして接続します。

ノート

ユーザーが複数のIAMグループのメンバーであり、それぞれに共有マッピングがある場合、データベースはデータベースのマッピング・ルール(作成順序など)に基づいてマッピングを決定します。目的の認可モデルに対してマッピングが明確でないことを確認します。

詳細は、次を参照してください:

データベース接続に対するIAM権限の付与

ユーザーがデータベース・トークンを生成して使用できるようにするには、データベース・ツール接続(リソース・タイプ: database-connections)に対するIAM権限を付与します。これらの権限には、DB_CONNECT権限が含まれます。

次の例のようなポリシー・ステートメントを使用します。

  • グループがテナンシでデータベース接続を使用できるようにします。

    allow group dbuser to use database-connections in tenancy
  • グループがコンパートメント内のデータベース接続を使用できるようにします。

    allow group dbuser to use database-connections in compartment prod
  • 特定のデータベースへのアクセスを(OCIDによって)制限します。

    allow group dbuser to use database-connections in compartment prod 
    where target.database.id = 'ocid1.autonomousdatabase.oc1.phx.xxxx'

IAMポリシーの詳細は、Autonomous AI DatabaseでのIAM認証の使用を参照してください。