Identity and Access Management (IAM)ユーザーのOracle Exadata Database Service on Dedicated Infrastructureへの接続

Oracle Cloud Infrastructure Identity and Access Management (IAM)認証および認可を使用するようにOracle Exadata Database Service on Dedicated Infrastructureを構成し、IAMユーザーがIAM資格証明を使用してOracle Databaseにアクセスできるようにします。

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

Oracle Exadata Database Service on Dedicated 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 Databaseなどのクラウド・リソースに適しています。トークンは、IAMエンドポイントで強制できる強度に基づきます。これはマルチファクタ認証である可能性があり、パスワードのみを使用するよりも強力です。トークンを使用するもう1つの利点は、パスワード・ベリファイア(機密とみなされる)がメモリーに格納されず、メモリーで使用できないことです。

ノート

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

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

Oracle Cloud Infrastructure IAMとOracle Exadata Database Service on Dedicated Infrastructureとの統合によって、次のことがサポートされます:

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

パスワード・ベリファイアのデータベース・アクセスのために、Oracle DatabaseインスタンスへのIAMユーザーおよびOCIアプリケーションのマッピングを作成します。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クラウド・シェル内)および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) Core: .NETクライアント(最新バージョンのLinuxまたはWindows)。.NETソフトウェア・コンポーネントは、次のサイトから無償でダウンロードできます:
      • Oracle Data Access Components - .NETのダウンロード
      • NuGet Gallery
      • Visual Studio Code Market Place
  • アプリケーションまたはツールがクライアント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クラウド・シェル内での委任トークンの使用など、その他の方法の詳細は、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. そのようなルールが存在しない場合は、「エグレス・ルールの追加」をクリックし、これらの特性を持つエグレス・ルールを追加します。

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

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

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

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

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

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

データベース・クライアントとサーバー間にTLSを構成する場合は、いくつかのオプションを検討する必要があります。

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

自己署名証明書

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

既知の認証局

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

一方向TLS

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

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

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

ウォレットありのクライアント

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

ウォレットなしのクライアント

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

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

自己署名証明書の使用および追加のウォレット関連タスクの詳細は、『Oracle Databaseセキュリティ・ガイド』公開キー・インフラストラクチャ(PKI)要素の管理を参照してください。

IAM統合のデータベースおよびクライアントの有効化

次の適切なリンクに従って、データベースにアクセスするようにIAMユーザーを構成します。

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