機械翻訳について

Exascaleインフラストラクチャ上のOracle Exadataデータベース・サービスへのIdentity and Access Management (IAM)ユーザーの接続

IAMユーザーがIAM資格証明を使用してOracle Databaseにアクセスできるように、Oracle Cloud Infrastructure Identity and Access Management (IAM)認証および認可を使用するように「Exascaleインフラストラクチャ上のExadata Database Service」を構成できます。

Oracle Databaseを使用したOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)認証

Oracle Exadata Database Service on Exascale InfrastructureでOracle Databaseインスタンスを有効にして、Oracle Cloud Infrastructure IAMデータベース・パスワード(パスワード・ベリファイアを使用)またはSSOトークンを使用したユーザー・アクセスを許可する方法について学習します。

Oracle Databaseを使用したOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)認証について

IAMユーザーは、IAMデータベースのパスワード・ベリファイアまたはIAMトークンのいずれかを使用して、データベース・インスタンスに接続できます。

IAMデータベース・パスワード・ベリファイアの使用は、データベース・パスワード認証プロセスに似ています。 ただし、データベースに格納されるパスワード・ベリファイア(パスワードの暗号化されたハッシュ)のかわりに、ベリファイアはOCI IAMユーザー・プロファイルの一部として格納されます。

データベースにIAMトークンを使用する2番目の接続メソッドは、より最新です。 トークン・ベースのアクセスの使用は、Exadata Cloud InfrastructureのOracle Databasesなどのクラウド・リソースに適しています。 トークンは、IAMエンドポイントで強制できる強度に基づいています。 これはマルチ・ファクタ認証であり、パスワードのみを使用するよりも強力です。 トークンを使用するもう1つの利点は、パスワード検証子(機密とみなされる)がメモリーに格納されないこと、またはメモリーで使用できないことです。

ノート:

Oracle Databaseは、アイデンティティ・ドメインを含むOracle Cloud Infrastructure (OCI) IAMと、アイデンティティ・ドメインを含まないレガシーIAMに対するOracle DBaaS統合をサポートしています。 アイデンティティ・ドメインでIAMを使用するときは、デフォルトと非デフォルトの両方のドメイン・ユーザーおよびグループがサポートされます。

デフォルト以外のカスタム・ドメインのサポートは、Oracle Databaseリリース19c、バージョン19.21以降でのみ使用できます(ただし、Oracle Databaseリリース21cでは使用できません)。

Oracle Cloud Infrastructure Oracle Exadata Database Service on Dedicated InfrastructureとのIAM統合では、次がサポートされます:

  • Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)データベース・パスワード検証者認証
  • Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM) SSOトークン・ベースの認証

Oracle Exadata Database Service on Dedicated InfrastructureでIAMユーザーを使用するためのアーキテクチャの詳細は、「Oracle Database 19cセキュリティ・ガイド」および「Oracle Database 23aiセキュリティ・ガイド」「Oracle DBaaSデータベースのIAMユーザーの認証および認可」を参照してください。

Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)データベース・パスワード検証者認証

Oracle Databaseインスタンスを有効にして、(パスワード検証を使用して)Oracle Cloud Infrastructure IAMデータベース・パスワードを使用したユーザー・アクセスを許可できます。

ノート:

サポートされている12c以上のデータベース・クライアントは、Oracle DatabaseへのIAMデータベース・パスワード・アクセスに使用できます。

Oracle Cloud Infrastructure IAMデータベース・パスワードを使用すると、IAMユーザーは、通常、Oracle Databaseユーザーがユーザー名とパスワードでログインするため、Oracle Databaseインスタンスにログインできます。 ユーザーは、IAMユーザー名およびIAMデータベース・パスワードを入力します。 IAMデータベースのパスワードは、Oracle Cloud Infrastructureコンソールのパスワードとは異なります。 パスワード・ベリファイアでIAMユーザーを使用すると、サポートされている任意のデータベース・クライアントでOracle Databaseにログインできます。

パスワード・ベリファイア・データベース・アクセスの場合、IAMユーザーおよびOCIアプリケーションのOracle Databaseインスタンスへのマッピングを作成します。 IAMユーザー・アカウント自体はIAMで管理されます。 ユーザー・アカウントとユーザー・グループは、デフォルト・ドメインまたはカスタムのデフォルト以外のドメイン内に存在できます。

IAMデータベース・パスワードの管理の詳細は、「ユーザー資格証明の管理」を参照してください。

Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM) SSOトークン・ベースの認証

データベースへのIAMトークン・アクセスの場合、クライアント・アプリケーションまたはツールは、IAMユーザーのIAMからデータベース・トークンをリクエストします。

クライアント・アプリケーションは、データベース・クライアントAPIを介してデータベース・トークンを直接データベース・クライアントに渡します。

アプリケーションまたはツールが更新されてIAMトークンをリクエストしていない場合、IAMユーザーはOCI CLIを使用してデータベース・トークンをリクエストおよび格納できます。 次の資格証明を使用して、データベース・アクセス・トークン(db-token)をリクエストできます:

  • セキュリティ・トークン(IAM認証あり)、委任トークン(OCI Cloud Shell内)およびAPI-keys。認証を有効にするためのIAMユーザーを表す資格証明です
  • インスタンス・プリンシパル・トークン。認証後にインスタンスを認可アクター(またはプリンシパル)にし、OCIリソースに対してアクションを実行できるようにします
  • リソース・プリンシパル・トークン。アプリケーションが他のOCIサービスに対して自身を認証できるようにする資格証明です
  • IAMユーザー名およびIAMデータベース・パスワードの使用(データベース・クライアントのみがリクエスト可能)

IAMユーザーがスラッシュ/ログインでクライアントにログインし、OCI_IAMパラメータが構成されている場合(sqlnet.oratnsnames.oraまたは接続文字列の一部として)、データベース・クライアントはファイルからデータベース・トークンを取得します。 IAMユーザーがユーザー名とパスワードを送信する場合、接続では、IAMデータベースのパスワード・ベリファイアを使用するクライアント接続について記述されたIAMデータベース・ベリファイア・アクセスが使用されます。 パラメータPASSWORD_AUTH=OCI_TOKENの場合、データベース・ドライバは、かわりにユーザー名とパスワードを使用してIAMに直接接続し、データベース・トークンをリクエストします。 このガイドの手順は、OCI CLIをデータベース・トークンのヘルパーとして使用する方法を示しています。 アプリケーションまたはツールがIAMで動作するように更新されている場合は、アプリケーションまたはツールの手順に従います。 一般的なユースケースには、次のものがあります: オンプレミスSQL*Plus、オンプレミスSQLcl、クラウド・シェルのSQL*Plus、またはSEPウォレットを使用するアプリケーション。

データベース・クライアントは、IAMデータベース・トークンを取得する方法はいくつかあります:
  • クライアント・アプリケーションまたはツールは、ユーザーのIAMからデータベース・トークンをリクエストでき、クライアントAPIを介してデータベース・トークンを渡すことができます。 APIを使用してトークンを送信すると、データベース・クライアントの他の設定がオーバーライドされます。 IAMトークンを使用するには、最新のOracle Databaseクライアント19c (少なくとも19.16)が必要です。 一部の以前のクライアント(19cおよび21c)は、トークン・アクセスのための制限された機能セットを提供します。 Oracle Databaseクライアント21cは、IAMトークン・アクセス機能を完全にサポートしていません:
    • すべてのプラットフォームでJDBC-thin
      • 詳細は、「IAMトークン・ベース認証のサポート」および「JDBCおよびUCPのダウンロード」を参照してください。
    • Linux上のSQL*PlusおよびOracle Instant Client OCI-C:

      詳細は、「Identity and Access Management (IAM)トークン・ベース認証」を参照してください

    • Oracle Data Provider for .NET (ODP.NET)コア : .NETクライアント(最新バージョンのLinuxまたはWindows)。.NETソフトウェア・コンポーネントは、次のサイトから無料でダウンロードできます:
      • Oracleデータ・アクセス・コンポーネント - .NETのダウンロード
      • NuGet Gallery
      • Visual Studio Codeマーケット場所
  • アプリケーションまたはツールがクライアントAPIを介したIAMデータベース・トークンのリクエストをサポートしていない場合、IAMユーザーは最初にOracle Cloud Infrastructureコマンドライン・インタフェース(CLI)を使用してIAMデータベース・トークンを取得し、ファイルのロケーションに保存できます。 たとえば、この接続方法を使用してSQL*Plusおよびその他のアプリケーションおよびツールを使用するには、最初にOracle Cloud Infrastructure (OCI)コマンドライン・インタフェース(CLI)を使用してデータベース・トークンを取得します。 詳細は、db-token getを参照してください。 データベース・クライアントがIAMデータベース・トークン用に構成されている場合、ユーザーがスラッシュ・ログイン・フォームでログインすると、データベース・ドライバは、デフォルトまたは指定したファイルのロケーションに保存されたIAMデータベース・トークンを使用します。
  • 一部のOracle Database 23aiクライアントは、OCIコマンドライン・インタフェースを使用するかわりに、OCI IAMから直接トークンを取得することもできます。 クライアントのドキュメントで、このネイティブIAM統合をサポートしているクライアントを確認してください。
  • クライアント・アプリケーションまたはツールは、Oracle Cloud Infrastructure IAMインスタンス・プリンシパルまたはリソース・プリンシパルを使用してIAMデータベース・トークンを取得し、IAMデータベース・トークンを使用してOracle Databaseインスタンスに対して自身を認証できます。 詳細は、「インスタンスとリソース・プリンシパルのマッピング」を参照してください。
  • IAMユーザーおよびOCIアプリケーションは、APIキーの使用など、いくつかのメソッドでIAMからデータベース・トークンをリクエストできます。 例については、IAMトークンを使用するSQL*Plusのクライアント接続の構成を参照してください。 OCI Cloud Shell内での委任トークンの使用など、他のメソッドの説明は、「Oracle DBaaSデータベースのIAMユーザーの認証および認可」を参照してください。

ノート:

データベースが制限モードの場合、RESTRICTED SESSION権限を持つDBAのみがデータベースに接続できます。

ユーザーがユーザー名/パスワードを入力してログインすると、データベース・ドライバはパスワード検証メソッドを使用してデータベースにアクセスします。 パラメータPASSWORD_AUTH=OCI_TOKENの場合、データベース・ドライバは、かわりにユーザー名とパスワードを使用してIAMに直接接続し、データベース・トークンをリクエストします。

Oracle DatabaseでのOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)認証の前提条件

Oracle DatabaseのIdentity and Access Management (IAM)認証の前提条件を確認します。

Oracle DatabaseでのIAM認証の前提条件

Exadata Cloud Infrastructureのデータベース上でIAM認証を使用する前に、ネットワーキング・サービスを使用して、データベース・リソースが存在するVirtual Cloud Network (VCN)およびサブネットにサービス・ゲートウェイ、ルート・ルールおよびエグレス・セキュリティ・ルールを追加する必要があります。

  1. OCIドキュメントの「タスク1: サービス・ゲートウェイの作成」の手順に従って、データベース・リソースが存在するVCNにサービス・ゲートウェイを作成します。
  2. サービス・ゲートウェイを作成した後、データベース・リソースが存在する各サブネット(VCN内)にルート・ルールおよびエグレス・セキュリティ・ルールを追加して、これらのリソースがゲートウェイを使用してIAM認証を使用できるようにします:
    1. サブネットの「サブネットの詳細」ページに移動します。
    2. 「サブネット情報」タブで、サブネットのルート表の名前をクリックして、その「ルート表詳細」ページを表示します。
    3. 既存のルート・ルールの表で、次の特性を持つルールがすでに存在するかどうかを確認します:
      • 宛先: Oracle Services NetworkのすべてのIADサービス
      • ターゲット・タイプ: サービス・ゲートウェイ
      • ターゲット: VCNで作成したサービス・ゲートウェイの名前

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

    4. サブネットの「サブネットの詳細」ページに戻ります。
    5. サブネットの「セキュリティ・リスト」表で、サブネットのセキュリティ・リストの名前をクリックして、その「セキュリティ・リストの詳細」ページを表示します。
    6. サイド・メニューの「リソース」で、「エグレス・ルール」をクリックします。
    7. 既存のエグレス・ルールの表で、次の特性を持つルールがすでに存在するかどうかを確認します:
      • ステートレス: いいえ
      • 宛先: Oracle Services NetworkのすべてのIADサービス
      • IPプロトコル: TCP
      • ソース・ポート範囲: すべて
      • 宛先ポート範囲: 443
    8. このようなルールが存在しない場合は、「エグレス・ルールの追加」をクリックし、これらの特性を持つエグレス・ルールを追加します。

外部認証スキームの無効化

Oracle DatabaseへのIAMユーザー・アクセスを有効にするための前提条件を確認します。

データベースが別の外部認証スキームに対して有効になっている場合は、Oracle DatabaseインスタンスでIAMを使用することを確認します。 常に有効な外部認証スキームは1つのみです。

IAMを使用し、別の外部認証スキームを有効にする場合は、まず他の外部認証スキームを無効にする必要があります。

IAMトークンを使用するためのTLSの構成

データベース・クライアントからデータベース・サーバーにIAMトークンを送信する場合、TLS接続を確立する必要があります。 ExaDB-Dサービス・インスタンスのデータベース証明書を含むTLSウォレットは、WALLET_ROOTのロケーションに格納する必要があります。 tlsディレクトリを作成: WALLET_ROOT/<PDB GUID>/tls

データベース・クライアントとサーバー間のTLSを構成する場合、考慮すべきオプションがいくつかあります。

  • 自己署名データベース・サーバー証明書と、よく知られた認証局によって署名されたデータベース・サーバー証明書の使用
  • 一方向TLS (TLS)、相互または双方向TLS (mTLS)
  • ウォレットの有無にかかわらずクライアント

自己署名証明書

自己署名証明書の使用は、自分で作成でき、無料であるため、内部的にITリソースに直面する一般的な方法です。 リソース(この場合、データベース・サーバー)には、データベース・クライアントに対して自身を認証するための自己署名証明書があります。 自己署名証明書およびルート証明書は、データベース・サーバー・ウォレットに格納されます。 データベース・クライアントがデータベース・サーバー証明書を認識できるようにするには、クライアントでルート証明書のコピーも必要です。 この自動作成されたルート証明書は、クライアント側のウォレットに格納することも、クライアント・システムのデフォルトの証明書ストアにインストールすることもできます(WindowsおよびLinuxのみ)。 セッションが確立されると、データベース・クライアントは、データベース・サーバーによって送信された証明書が同じルート証明書によって署名されていることを確認します。

既知の認証局

一般的に知られているルート認証局を使用すると、ルート証明書がすでにクライアント・システムのデフォルトの証明書ストアに格納されている可能性が高いという点で、いくつかの利点があります。 共通のルート証明書であれば、クライアントがルート証明書を格納するための追加のステップはありません。 不利な点は、通常はコストが関連付けられていることです。

一方向TLS

標準のTLSセッションでは、サーバーのみがクライアントに証明書を提供して自身を認証します。 クライアントは、サーバーに対して自身を認証するために個別のクライアント証明書を必要としません(HTTPSセッションの確立方法と同様)。 データベースにはサーバー証明書を格納するためのウォレットが必要ですが、クライアントに必要なのは、サーバー証明書の署名に使用されるルート証明書のみです。

双方向TLS (相互TLS、mTLSとも呼ばれる)

mTLSでは、クライアントとサーバーの両方に、相互に表示されるアイデンティティ証明書があります。 ほとんどの場合、同じルート証明書がこれらの証明書の両方に署名されているため、データベース・サーバーとクライアントで同じルート証明書を使用してほかの証明書を認証できます。ユーザー・アイデンティティは証明書によってデータベース・サーバーによって認証されるため、mTLSを使用してユーザーを認証することがあります。 これは、IAMトークンを渡すには必要ありませんが、IAMトークンを渡すときに使用できます。

Walletを使用するクライアント

クライアント証明書を格納するためにmTLSを使用する場合、クライアント・ウォレットは必須です。 ただし、ルート証明書は、同じウォレットまたはシステムのデフォルトの証明書ストアに格納できます。

Walletを使用しないクライアント

これらの条件でTLSを使用する場合、クライアントはウォレットなしで構成できます: 1)一方向TLSは、クライアントに独自の証明書がなく、2)データベース・サーバー証明書に署名したルート証明書がシステムのデフォルト証明書ストアに格納される場合に構成されます。 サーバー証明書が共通認証局によって署名されている場合、おそらくすでにルート証明書が存在することになります。 自己署名証明書の場合は、クライアント・ウォレットの使用を回避するために、システムのデフォルトの証明書ストアにルート証明書をインストールする必要があります。

前述のオプションを含むデータベース・クライアントとデータベース・サーバーの間のTLSを構成する方法の詳細は、「Oracle Databaseセキュリティ・ガイド」「トランスポート層のセキュリティ認証の構成」を参照してください。

自己署名証明書を使用し、その他のウォレット関連タスクを使用する場合は、「Oracle Databaseセキュリティ・ガイド」「公開キー・インフラストラクチャ(PKI)要素の管理」を参照してください。

Oracle DatabaseでのOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)認証の有効化、無効化および再有効化

Oracle DatabaseでIdentity and Access Management (IAM)認証を有効化、無効化および再有効化する方法について学習します。

Oracle DatabaseでOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)認証を有効にします

Oracle DatabaseへのIAMユーザー・アクセスを有効化または再有効化するステップを確認します。

ノート:

Oracle Databaseは、アイデンティティ・ドメインを含むOracle Cloud Infrastructure (OCI) IAMと、アイデンティティ・ドメインを含まないレガシーIAMに対するOracle DBaaS統合をサポートしています。 アイデンティティ・ドメインでIAMを使用するときは、デフォルトと非デフォルトの両方のドメイン・ユーザーおよびグループがサポートされます。
  1. 詳細は、Oracle Database.See 「Oracle DatabaseでのOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)認証の前提条件」でIAM認可および認証の前提条件を実行します。
  2. ALTER SYSTEMコマンドを使用して、Oracle Cloud Infrastructure (IAM)認証および認可を有効にします。
    ALTER SYSTEM SET IDENTITY_PROVIDER_TYPE=OCI_IAM SCOPE=BOTH;
  3. IDENTITY_PROVIDER_TYPEシステム・パラメータの値を確認します。
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='identity_provider_type';
    
    NAME                     VALUE
    ----------------------   -------
    identity_provider_type   OCI_IAM

Oracle DatabaseでOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)認証を無効にします

Oracle DatabaseのIAM外部認証ユーザー・アクセスを無効にするステップについて説明します。

Oracle DatabaseインスタンスでIAMユーザー・アクセスを無効にするには:

  1. ALTER SYSTEMコマンドを使用して、IAM統合を無効にします。
    ALTER SYSTEM RESET IDENTITY_PROVIDER_TYPE SCOPE=BOTH;
  2. データベース・アクセスを許可するIAMポリシーも削除する場合は、IAMユーザーによるデータベースへのアクセスを許可するために設定したIAMグループおよびポリシーを確認および削除する必要があります。

Identity and Access Management (IAM)認証でのOracle Databaseツールの使用

IAM認証を有効にした状態でOracle Databaseツールを使用するためのノートを確認します。

  • Oracle APEXは、Oracle Databaseを持つIAMユーザーではサポートされていません。
  • データベース・アクションは、Oracle Databaseを持つIAMユーザーではサポートされていません。 Oracle Databaseで通常のデータベース・ユーザーを使用する方法の詳細は、「データベース・ユーザーへのデータベース・アクション・アクセスの提供」を参照してください。
  • Oracle Machine Learningノートブックおよびその他のコンポーネントは、Oracle Databaseを持つIAM認可ユーザーではサポートされていません。 Oracle Databaseで通常のデータベース・ユーザーを使用する方法の詳細は、「既存のデータベース・ユーザー・アカウントをOracle Machine Learningコンポーネントに追加」を参照してください。

Oracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)グループおよびポリシー、ユーザー、ロールおよびデータベース・パスワードの管理

Oracle Exadata Database Service on Exascale Infrastructureシステムには、複数の異なるサービス管理メソッドが用意されています。

IAMユーザーのOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)グループおよびポリシーの作成

IAMグループのポリシー・ステートメントを記述して、IAMユーザーがOracle Cloud Infrastructureリソース(特にIAMデータベース・トークンを使用するOracle Databaseインスタンス)にアクセスできるようにするステップを確認します。

ポリシーは、特定のリソースにアクセスできるユーザーおよび方法を指定する文のグループです。 アクセスは、テナンシ全体、コンパートメント内のデータベースまたは個々のデータベースに対して付与できます。 つまり、特定のグループに特定のコンパートメント内の特定のタイプのリソースへのアクセス権を付与するポリシー・ステートメントを記述します。

ノート: IAMトークンを使用してOracle Databaseにアクセスするには、ポリシーを定義する必要があります。 IAMデータベース・パスワード・ベリファイアを使用してOracle Databaseにアクセスする場合、ポリシーは不要です。

  1. データベースにアクセスするIAMユーザーのIAMグループを作成します。 グループの作成およびIAMユーザーのグループへの追加については、OCI IAMドキュメントを確認してください。

    たとえば、グループDBUsersを作成します。 詳細は、グループの管理を参照してください。

  2. Oracle Cloud Infrastructureリソースへのアクセスを有効にするポリシー・ステートメントを記述します。
    1. Oracle Cloud Infrastructureコンソールで、「アイデンティティとセキュリティ」をクリックし、「ポリシー」をクリックします。
    2. ポリシーを記述するには、「ポリシーの作成」をクリックし、「名前」および「説明」を入力します。
    3. 「ポリシー・ビルダー」を使用してポリシーを作成します。 たとえば、IAMグループDBUsersのユーザーがテナンシのOracle Databaseにアクセスできるようにするポリシーを作成するには:
      Allow group DBUsers to use database-connections in tenancy

      ここで、database-connectionsはデータベースに接続するためのOCIリソース名です。 Useは、データベースへのアクセスを許可する最小動詞です。 usemanageの両方を使用できます。

      たとえば、DBUsersグループのメンバーがコンパートメントtesting_compartmentのOracle Databasesにのみアクセスするように制限するポリシーを作成するには:
      allow group DBUsers to use database-connections in compartment testing_compartment
      たとえば、コンパートメント内の単一データベースへのグループ・アクセスを制限するポリシーを作成するには:
      allow group DBUsers to use database-connections in compartment testing_compartment where target.database.id = 'ocid1.database.oc1.iad.aaaabbbbcccc'
    4. 「作成」をクリックします。

      ポリシーの詳細は、ポリシーの管理を参照してください。

Oracle DatabaseでIAMユーザーで使用するポリシーを作成するためのノート:
  • ポリシーによって、IAMユーザーはテナンシ全体、コンパートメント内のOracle Databaseインスタンスにアクセスすることも、単一のOracle Databaseインスタンスへのアクセスを制限することもできます。
  • インスタンス・プリンシパルおよびリソース・プリンシパルの場合は、動的グループを使用する必要があります。 動的グループを作成し、作成したポリシーで動的グループを参照してOracle Cloud Infrastructureにアクセスできます。 詳細は、ポリシーおよびロールの構成によるクラウド・リソースへのアクセスおよび動的グループの管理を参照してください。

Oracle DatabaseでのOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ユーザーの認可

Oracle DatabaseインスタンスでIAMユーザーを認可するステップを確認します。

IAMユーザーにOracle Databaseへのアクセスを許可するには、データベース・グローバル・ユーザーをIAMグループにマップするか、IDENTIFIED GLOBALLY AS句を指定してCREATE USERまたはALTER USER文を使用してIAMユーザーに直接マップします。

IAMユーザーからOracle Databaseインスタンスへの認可は、IAMグローバル・ユーザー(スキーマ)をIAMユーザー(排他マッピング)またはIAMグループ(共有スキーマ・マッピング)にマップすることで機能します。

データベース・インスタンスでIAMユーザーを認可するには:

  1. DBA権限を持つユーザーとして、IAMを使用できるデータベースにログインします。 DBAロールを持つユーザーには、これらのステップに必要なCREATE USERおよびALTER USERシステム権限が必要です。
  2. CREATE USER文またはALTER USER文を使用してOracle Databaseユーザー(スキーマ)間のマッピングを作成し、IAMグループ名を指定してIDENTIFIED GLOBALLY AS句を含めます。 グローバル・ユーザーをIAMグループにマップするには、次の構文を使用します:
    CREATE USER global_user IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_NAME';
    たとえば、db_sales_groupという名前のIAMグループをsales_groupという名前の共有データベース・グローバル・ユーザーにマップするには:
    CREATE USER sales_group IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=db_sales_group';

    これにより、共有グローバル・ユーザー・マッピングが作成されます。 グローバル・ユーザーsales_groupを使用したマッピングは、IAMグループ内のすべてのユーザーに対して有効です。 したがって、db_sales_groupのユーザーは、sales_groupグローバル・ユーザーの共有マッピングを介してIAM資格証明を使用してデータベースにログインできます。

    他のIAMグループまたはユーザーの追加のグローバル・ユーザー・マッピングを作成する場合は、各IAMグループまたはユーザーについて次のステップに従います。

    ノート:

    IDENTIFIED GLOBALLYではないデータベース・ユーザーは、Oracle DatabaseがIAM認証に対して有効になっている場合でも、以前と同様にログインを続行できます。

ローカルIAMユーザーをOracle Databaseグローバル・ユーザーに排他的にマップするには

ローカルのIAMユーザーをOracle Databaseグローバル・ユーザーに排他的にマッピングできます。

  1. DBA権限を持つユーザーとして、IAMを使用できるデータベースにログインします。 DBAロールを持つユーザーには、これらのステップに必要なCREATE USERおよびALTER USERシステム権限が必要です。
  2. CREATE USER文またはALTER USER文を使用してOracle Databaseユーザー(スキーマ)間のマッピングを作成し、IAMローカルIAMユーザー名を指定してIDENTIFIED GLOBALLY AS句を含めます。 たとえば、peter_fitchという名前の新しいデータベース・グローバル・ユーザーを作成し、このユーザーをpeterfitchという名前の既存のローカルIAMユーザーにマップするには:
    CREATE USER peter_fitch IDENTIFIED GLOBALLY AS 'IAM_PRINCIPAL_NAME=peterfitch'

インスタンス・プリンシパルまたはリソース・プリンシパルのいずれかを使用してデータベース・トークンを取得し、アプリケーションからOracle Databaseインスタンスへの接続を確立できます。

インスタンス・プリンシパルまたはリソース・プリンシパルを使用している場合は、動的グループをマップする必要があります。 したがって、インスタンスおよびリソース・プリンシパルを排他的にマップすることはできません。 これらは、共有マッピングを介してのみマップし、インスタンスまたはリソース・インスタンスをIAM動的グループに配置できます

Oracle DatabaseにOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)ロールを追加

オプションで、複数のIAMユーザーが同じ共有グローバル・ユーザーにマップされている場合に、IAMユーザーに追加のデータベース・ロールと権限を提供するグローバル・ロールを作成します。

グローバル・ロールの作成はオプションですが、共有スキーマにユーザーを割り当てるときに便利です。

グローバル・ロールを使用して、同じ共有スキーマを使用するユーザーをオプションで区別します。 たとえば、ユーザーのセットはすべて同じ共有スキーマを持ち、共有スキーマにはCREATE SESSION権限を設定できます。 次に、グローバル・ロールを使用して、同じ共有スキーマを使用する様々なユーザー・グループに割り当てられた差別化された権限とロールを提供できます。

Oracle DatabaseのIAMユーザーに追加のロールの付与は、Oracle Databaseグローバル・ロールをIAMグループにマッピングすることで機能します。

  1. DBA権限を持つユーザーとして、IAMを使用できるデータベースにログインします。 これらのステップでは、DBA権限CREATE ROLEおよびALTER ROLEシステム権限を持つユーザーが必要です。
  2. CREATE ROLEまたはALTER ROLE文を使用してOracle Databaseロールのデータベース認可を設定し、IAMグループ名を指定してIDENTIFIED GLOBALLY AS句を含めます。 グローバル・ロールをIAMグループにマップするには、次の構文を使用します:
    CREATE ROLE global_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_GROUP_of_WHICH_the_IAM_USER_IS_a_MEMBER';
    たとえば、ExporterGroupという名前のIAMグループをexport_roleという名前の共有データベース・グローバル・ロールにマップするには:
    CREATE ROLE export_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=ExporterGroup';
  3. GRANT文を使用して、必要な権限またはその他のロールをグローバル・ロールに付与します。
    GRANT CREATE SESSION TO export_role;
    GRANT DWROLE TO export_role;
  4. 既存のデータベース・ロールをIAMグループに関連付ける場合は、ALTER ROLE文を使用して、既存のデータベース・ロールを変更し、ロールをIAMグループにマップします。 次の構文を使用して、既存のデータベース・ロールを変更してIAMグループにマップします:
    ALTER ROLE existing_database_role IDENTIFIED GLOBALLY AS 'IAM_GROUP_NAME=IAM_Group_Name';

他のIAMグループのグローバル・ロール・マッピングを追加するには、各IAMグループの次のステップに従います。

IAMユーザーのOracle Cloud Infrastructure (OCI) Identity and Access Management (IAM)データベース・パスワードの作成

IAMユーザーを追加し、IAMユーザーがユーザー名とパスワードを指定してOracle Databaseにログインできるようにするには、IAMデータベース・パスワードを作成する必要があります。

詳細は、「IAMデータベース・パスワードの操作」を参照してください。

関連トピック

クライアント接続の構成

IAM認証を使用するように様々なクライアントを構成します。

IAMデータベース・パスワード検証機能を使用するSQL*Plusのクライアント接続の構成

IAMデータベース・パスワード検証を使用するようにSQL*Plusを構成できます。

IAMユーザーとして、次の構文を使用してデータベースにログインします:
CONNECT user_name@db_connect_string
Enter password: password

この仕様では、user_nameはIAMユーザー名です。 結合されたdomain_name/user_nameには128バイトの制限があります。

次の例は、IAMユーザーpeter_fitchがデータベース・インスタンスにログインする方法を示しています。
sqlplus /nolog
connect peter_fitch@db_connect_string
Enter password: password
一部の特殊文字では、user_nameおよびの周りに二重引用符が必要です。 たとえば:
"peter_fitch@example.com"@db_connect_string

"IAM database password"

IAMトークンを使用するSQL*Plusのクライアント接続の構成

IAMトークンを使用するSQL*Plusのクライアント接続を構成できます。

  1. IAMユーザー・アカウントがあることを確認します。
  2. IAM管理者およびデータベース管理者と協力して、コンパートメントまたはテナンシのデータベースにアクセスできるポリシーがあり、データベースのグローバル・スキーマにマップされていることを確認します。
  3. アプリケーションまたはツールで直接のIAM統合がサポートされていない場合は、OCI CLIをダウンロードしてインストールし、構成します。 (OCIコマンドライン・インタフェースのクイックスタートを参照。) OCI CLI構成の一部としてAPIキーを設定し、デフォルト値を選択します。
    1. IAMユーザーのAPIキー・アクセスを設定します。
    2. db-tokenを取得します。 たとえば:
      • OCI CLIを使用して、API-keyを含むdb-tokenを取得します:
        oci iam db-token get
      • セキュリティ(またはセッション)トークンを使用してdb-tokenを取得します:
        oci iam db-token get --auth security_token
      • 委任トークンを使用してdb-tokenを取得: クラウド・シェルにログインすると、委任トークンが自動的に生成され、/etcディレクトリに配置されます。 このトークンを取得するには、OCI CLIで次のコマンドを実行します:
        oci iam db-token get
      • インスタンス・プリンシパルを使用して、OCI CLIを使用してdb-tokenを取得します:
        oci iam db-token get --auth instance_principal

      セキュリティ・トークンが期限切れになると、ユーザーがOCIに再度ログインできるようにウィンドウが表示されます。 これにより、ユーザーのセキュリティ・トークンが生成されます。 OCI CLIでは、このリフレッシュされたトークンを使用してdb-tokenを取得します。

      詳細については、「必要なキーとOCID」を参照してください。

  4. Oracle Databaseクライアント・リリース19cの最新リリース更新を使用していることを確認します。

    この構成は、Oracle Databaseクライアント・リリース19cでのみ機能します。

  5. 既存のプロセスに従って、ウォレットをデータベースからダウンロードし、SQL*Plusで使用するように構成するための指示に従います。
    1. sqlnet.oraSSL_SERVER_DN_MATCH=ONを検索して、DN一致が有効になっていることを確認します。
    2. sqlnet.oraファイルにTOKEN_AUTH=OCI_TOKENを追加して、IAMトークンを使用するようにデータベース・クライアントを構成します。 データベース・トークン・ファイルのデフォルトの場所を使用するため、トークンの場所を含める必要はありません。
    tnsnames.ora接続文字列内のTOKEN_AUTHおよびTOKEN_LOCATION値は、その接続のsqlnet.ora設定より優先されます。 たとえば、接続文字列の場合、トークンがデフォルトのロケーション(Linuxの場合は~/.oci/db-token)にあると仮定します:
    (description= 
      (retry_count=20)(retry_delay=3)
      (address=(protocol=tcps)(port=1522)
      (host=example.us-phoenix-1.oraclecloud.com))
      (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
      (security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com, 
         OU=Oracle BMCS US, O=Example Corporation, 
         L=Redwood City, ST=California, C=US")
      (TOKEN_AUTH=OCI_TOKEN)))
TOKEN_AUTHパラメータを使用して接続文字列を更新した後、IAMユーザーは次のコマンドを実行してSQL*Plusを起動することで、データベース・インスタンスにログインできます。 接続記述子自体を含めることも、tnsnames.oraファイルの記述子の名前を使用することもできます。
connect /@exampledb_high
または
connect /@(description= 
  (retry_count=20)(retry_delay=3)
  (address=(protocol=tcps)(port=1522)
  (host=example.us-phoenix-1.oraclecloud.com))
  (connect_data=(service_name=aaabbbccc_exampledb_high.example.oraclecloud.com))
  (security=(ssl_server_cert_dn="CN=example.uscom-east-1.oraclecloud.com, 
     OU=Oracle BMCS US, O=Example Corporation, 
     L=Redwood City, ST=California, C=US")
  (TOKEN_AUTH=OCI_TOKEN)))

TOKEN_AUTHsqlnet.oraファイルまたは接続文字列のいずれかですでに設定されているため、データベース・クライアントはdb-tokenを取得するようにすでに構成されています。 データベース・クライアントはdb-tokenを取得し、秘密キーを使用して署名し、トークンをデータベースに送信します。 スラッシュ/のかわりにIAMユーザー名とIAMデータベース・パスワードが指定されている場合、データベース・クライアントはdb-tokenを使用せずにパスワードを使用して接続します。

IAMユーザー名およびデータベース・パスワードによってリクエストされたトークンを使用するクライアント接続

IAMユーザー名およびデータベース・パスワードでリクエストされたトークンを使用するクライアント接続を作成できます。

  • IAMユーザーは、IAMユーザー名およびIAMデータベース・パスワードを使用して取得されたIAMトークンを使用して、Oracle DBaaSインスタンスに接続できます。

    詳細は、「IAMユーザー名およびデータベース・パスワードによってリクエストされたトークンを使用するクライアント接続について」を参照してください

  • これらのパラメータを設定するには、sqlnet.oraファイルまたはtnsnames.oraファイルのいずれかを変更します。

    詳細は、「IAMユーザー名およびデータベース・パスワードによってリクエストされたトークンを使用するクライアント接続に設定するパラメータ」を参照してください

  • 指定したIAMユーザー名およびIAMデータベース・パスワードを使用してIAMデータベース・トークンを取得するようにデータベース・クライアントを構成できます。

    詳細は、「IAMユーザー名およびデータベース・パスワードを使用してトークンを取得するためのデータベース・クライアントの構成」を参照してください

  • IAMユーザー名および安全性の高い外部パスワード・ストア(SEPS)でIAMデータベース・トークンをリクエストするように設定できます。

    詳細は、「IAMトークンを取得するためのセキュアな外部パスワード・ストアWalletの構成」を参照してください

Instance Principalを使用したIAM認証でのデータベースへのアクセス

ADMINユーザーがデータベースでOCI IAMを有効にすると、アプリケーションはインスタンス・プリンシパルを使用してOCI IAMデータベース・トークンを介してデータベースにアクセスできます。

詳細は、「インスタンス・プリンシパルを使用したOracle Cloud Infrastructure APIへのアクセス」を参照してください。

詳細は、「Instance Principalまたはリソース・プリンシパルを使用したデータベースへのアクセス」を参照してください。

プロキシ認証の構成

プロキシ認証により、IAMユーザーは、アプリケーションのメンテナンスなどのタスクのためにデータベース・スキーマにプロキシできます。

プロキシ認証は、通常、実際のユーザーを認証し、アプリケーションを管理するためにスキーマ権限およびロールを持つデータベース・スキーマの使用を認可するために使用されます。 アプリケーション・スキーマ・パスワードの共有などの代替方法は、安全でないものとみなされ、実際のユーザーがアクションを実行したものを監査できません。

ユース・ケースは、アプリケーション・データベース管理者である名前付きIAMユーザーが、資格証明を使用して認証し、データベース・スキーマ・ユーザー(たとえば、hrapp)にプロキシできます。 この認証により、IAM管理者は、アプリケーションのメンテナンスを実行するためにhrapp権限およびロールをユーザーhrappとして使用できますが、認証にはIAM資格証明を使用します。 アプリケーション・データベース管理者は、データベースにサインインし、アプリケーション・スキーマにプロキシしてこのスキーマを管理できます。

パスワード認証とトークン認証の両方のメソッドにプロキシ認証を構成できます。

IAMユーザーのプロキシ認証の構成

IAMユーザーのプロキシ認証を構成するには、IAMユーザーにはグローバル・スキーマ(排他マッピングまたは共有マッピング)へのマッピングがすでに必要です。 プロキシするIAMユーザーの別のデータベース・スキーマも使用可能である必要があります。

このタイプのユーザーがあることを確認したら、IAMユーザーにプロキシを許可するようにデータベース・ユーザーを変更します。

  1. ALTER USERシステム権限を持つユーザーとしてデータベース・インスタンスにログインします。
  2. ローカル・データベース・ユーザー・アカウントにプロキシする権限をIAMユーザーに付与します。 IAMユーザーをコマンドで参照できないため、データベース・グローバル・ユーザー(IAMユーザーにマップ)とターゲット・データベース・ユーザーの間にプロキシを作成する必要があります。次の例では、hrappはプロキシ先のデータベース・スキーマで、peterfitch_schemaはユーザーpeterfitchに排他的にマップされたデータベース・グローバル・ユーザーです。
    ALTER USER hrapp GRANT CONNECT THROUGH peterfitch_schema;
この段階で、IAMユーザーはプロキシを使用してデータベース・インスタンスにログインできます。 たとえば:
  • パスワード検証を使用して接続するには:
    CONNECT peterfitch[hrapp]@connect_string
    Enter password: password
  • トークンを使用して接続するには:
    CONNECT [hrapp]/@connect_string

IAMユーザー・プロキシ認証の検証

パスワード認証メソッドとトークン認証メソッドの両方についてIAMユーザー・プロキシ構成を検証できます。

  1. IAMユーザーとして接続し、データベース・ユーザーにプロキシします。 SHOW USERおよびSELECT SYS_CONTEXTコマンドを実行します。

    たとえば、データベース・ユーザー「ヘラジカ」にプロキシするときに、IAMユーザー「ピーターフィッチ」のプロキシ認証を確認するとします。 ここに示す様々なタイプの認証メソッドを使用してデータベースに接続する必要がありますが、実行するコマンドの出力はすべてのタイプで同じになります。

    • パスワード認証の場合:
      CONNECT peterfitch[hrapp]/password\!@connect_string SHOW USER;
      --The output should be USER is "HRAPP" 
      SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL;
      --The output should be "PASSWORD_GLOBAL" 
      SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL; 
      --The output should be "PETERFITCH_SCHEMA" 
      SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL;
      --The output should be "HRAPP"
    • トークン認証の場合:
      CONNECT [hrapp]/@connect_string
      SHOW USER;
      
      --The output should be USER is "HRAPP "
      SELECT SYS_CONTEXT('USERENV','AUTHENTICATION_METHOD') FROM DUAL;
      --The output should be "TOKEN_GLOBAL"
      SELECT SYS_CONTEXT('USERENV','PROXY_USER') FROM DUAL;
      --The output should be "PETERFITCH_SCHEMA"
      SELECT SYS_CONTEXT('USERENV','CURRENT_USER') FROM DUAL;
      --The output should be "HRAPP"

IAM認証済ユーザーでのデータベース・リンクの使用

データベース・リンクを使用して、あるデータベース・インスタンスから別のデータベース・インスタンスにOCI IAMユーザーとして接続できます。

接続されたユーザーまたは固定ユーザーのデータベース・リンクを使用して、OCI IAMユーザーとしてデータベースに接続できます。

ノート:

現在のユーザー・データベース・リンクは、OCI IAMユーザーとしてExadata Cloud Infrastructure内のデータベースに接続するためにサポートされていません。
  • 接続されたユーザー・データベース・リンク: 接続されたユーザー・データベース・リンクの場合、IAMユーザーは、データベース・リンクによって接続されたソース・データベースとターゲット・データベースの両方でスキーマにマップされる必要があります。 データベース・パスワード・ベリファイアまたはIAMデータベース・トークンを使用して、接続されたユーザー・データベース・リンクを使用できます。

  • 固定ユーザー・データベース・リンク: 固定ユーザー・データベース・リンクは、データベース・ユーザーまたはIAMユーザーを使用して作成できます。 IAMユーザーを固定ユーザー・データベース・リンクとして使用する場合、IAMユーザーはターゲット・データベースでスキーマ・マッピングを持っている必要があります。 データベース・リンクのIAMユーザーは、パスワード・ベリファイアでのみ構成できます。