Autonomous AI Databaseでの多要素認証の使用

マルチファクト認証(MFA)は、ユーザーのアイデンティティを検証するために複数の要素を使用する必要のある認証方法です。

トピック:

マルチファクタ認証について

Autonomous AI Databaseは、マルチファクタ認証(MFA)をサポートし、ユーザー・パスワードを超える追加の検証ステップを必要とすることで、アクセス・セキュリティを強化します。MFAは、データベース・ログイン、保護されたSQL文の実行またはその両方に対して有効にできます。

MFAを有効にすると、データベースに接続するときに、ユーザー名とパスワードを指定します。これが最初の要素です。わかっていること、または記憶できることです。次に、登録されたMFAデバイスから2番目の検証コードを指定する必要があります。これは2番目の要素です。この2つのファクタを組み合せて、アイデンティティを確認し、サインイン・プロセスを完了するための追加情報または2番目のデバイスを使用して、セキュリティのレイヤーを追加します。

Autonomous AI Databaseは、MFAを認証およびSQL実行ライフサイクルに統合することで、セキュリティを強化します。このアプローチは、認証済で検証済ユーザーのみがSQL操作に接続および実行できるようにすることで、不正アクセスのリスクを減らし、資格証明が損なわれる影響を制限するのに役立ちます。サインインとSQLの両方のワークフローにトークンまたはプッシュ通知ベースのMFAを適用することで、Autonomous AI Databaseは、資格証明の盗難、悪意のあるアクティビティ、潜在的なデータ漏洩に対する保護を強化します。

MFAは、認証時に階層化された検証方法を使用できるDBMS_MFA_*パッケージを介してAutonomous AI Databaseで有効化されます。これには、ユーザー名やパスワードなどのプライマリ資格証明と、ワンタイム・パスコード(OTP)やモバイル・オーセンティケータ・アプリケーションを介した検証などの2番目の認証ファクタの組合せが含まれます。これにより、認可および検証済のアイデンティティのみがデータベースにアクセスし、SQL操作を実行できるようになります。

Autonomous AI Databaseは、2つのMFA強制オプションをサポートしており、セキュリティ・ニーズに基づいて保護レベルを選択できます。
  • ログイン時MFA。データベース・セッションが確立される前に、データベース・ログイン中にMFAが必要です。

  • SQLアクセスMFA (SQLアクセス・トークン)は、プライマリ資格証明を使用したログインを許可し、機密SQL文が実行された場合にのみMFAを強制します。

ノート

この機能は、Oracle Databaseリリース19cでのみサポートされています。

Autonomous AI DatabaseでMFAを使用する主なメリット

  • データベース・アクセスの保護の強化: MFAは、認証中またはSQL文の実行中に追加の検証ステップを追加することで、セキュリティを向上させます。パスワードが危険にさらされた場合でも、ワンタイム・パスコード(OTP)やオーセンティケータ・アプリケーションからの承認などの追加の認証ファクタが正常に完了しないかぎり、アクセスはブロックされます。これにより、データベース・リソースへの不正アクセスのリスクが軽減されます。

  • 一般的な攻撃に対する防御: MFAは、フィッシングや総当たり攻撃などの一般的な攻撃方法から保護するのに役立ちます。攻撃者はパスワードを盗んだり推測しようとするかもしれませんが、MFAは、2番目の認証要素なしでアクセスを防止する追加の障壁を追加し、これらの攻撃の効果をはるかに低くします。

  • 規制要件のサポート: 財務、保険、医療などの多くの業界では、機密データを保護するために強力な認証制御が必要です。自律型AIデータベースでMFAを有効にすると、組織はこれらの規制要件を満たしながら、セキュリティのベストプラクティスを遵守できます。

  • 可視性と監視の向上: MFAには、認証アクティビティを可視化する監視機能が含まれています。これらの機能は、異常なアクセスまたは疑わしいアクセスの試行を識別し、強力なセキュリティ・ポスチャを維持するのに役立ちます。

マルチファクタ認証に関連する概念

MFAで使用される主要な概念には次のものがあります。

  • 多要素認証(MFA): MFAは、システム、アプリケーションまたはデータにアクセスする前に、ユーザーが2つ以上の異なる形式の検証を提供する必要があるセキュリティ・メカニズムです。検証要因は次のとおりです。
    • パスワード、PIN、またはセキュリティに関する質問。

    • お持ちのもの – スマートフォン、ハードウェアトークン、セキュリティキーなどの物理デバイス。

    • 指紋、顔認識、音声認識などの生体認証。

  • オーセンティケータ・アプリケーション: モバイル・デバイスにインストールするアプリ。アイデンティティの検証用に、ソフトウェアベースのセキュア・トークンを提供できます。例: Oracle Mobile Authenticator。Autonomous AI DatabaseでMFAを有効にするには、オーセンティケータ・アプリケーションがインストールされているデバイスが必要です。このアプリケーションを使用してデバイスを登録し、同じアプリケーション(同じデバイス上)を使用してプッシュ通知を受信するか、Autonomous AI Databaseに接続するたびに受信します。
    • Autonomous AI Databaseでは、次のオーセンティケータ・アプリケーションがサポートされています:

      • Oracle Mobile Authenticator

      • Cisco Duoモバイルアプリ

      これらのアプリケーションはモバイル・デバイスのアプリケーション・ストアにあります。MFAを有効化するには、モバイル・デバイスにこれらのアプリケーションのいずれかをインストールする必要があります。

  • 登録済モバイル・デバイス: MFAは、特定のユーザーおよび特定のデバイスに対して有効です。ユーザーのMFAを有効化する手順には、モバイル・デバイスの登録が含まれます。この同じデバイスを使用して、ユーザーがサインインするたびに時間ベースのワンタイム・パスコードを生成する必要があります。登録されたモバイル・デバイスが使用不可になった場合、ユーザーのMFAを無効化してMFAを新しいデバイスで再度有効化できるようにする必要があります。

  • SQLアクセス・トークン: SQLアクセス・トークンは、業界標準のワンタイム・パスワード(OTP)を使用して、Autonomous AI DatabaseにセキュアなMFAを提供します。これらのトークンは、データベースへのアクセスまたは保護されたSQL操作の実行に必要であり、不正アクセスのリスクを大幅に軽減します。

  • プッシュ通知: プッシュ通知は、ブラウザまたはアプリケーションがアクティブでない場合でも、アプリケーションまたはWebサイトからユーザーのモバイル・デバイスに送信される、クリック可能な短いポップアップ・メッセージです。

Autonomous AI Databaseの多要素認証タイプ

Autonomous AI Databaseで使用可能なMFAオプションと、ログイン時または保護されたSQL文の実行時に、それぞれがデータベース・アクセスにどのように適用されるかを説明します。

ログイン時MFA

Autonomous AI Databaseのログイン時MFAは、Oracle Mobile Authenticator (OMA)またはCisco Duo Mobileアプリを介してユーザーの登録済モバイル・デバイスに配信されるセキュアなプッシュ通知を使用してのみ実装できます。電子メールや Slackなどの代替方法は、このワークフローではサポートされていません。これにより、有効な資格証明と認可されたモバイル・デバイスの両方を持つユーザーのみがデータベースにアクセスできるようになり、資格証明の盗難に対する堅牢な保護が提供され、MFAの規制コンプライアンスがサポートされます。

ログイン時MFA用に既存のデータベース・ユーザーを登録しようとすると、Oracleはワンタイム登録EメールをユーザーのEメール・アドレスに送信します。登録内容は、選択したオーセンティケータによって異なります。OMA Eメールには、ユーザーのデバイスをOMAアプリケーションに登録するための登録リンクとQRコードが含まれていますが、DUO Eメールには登録リンクと、デバイス登録を完了するための指示が用意されています。ユーザーは、適切なオーセンティケータ・アプリケーションをインストールし、リンクをクリックするか、アプリケーションでQRコードをスキャンして登録を完了する必要があります。電子メールは英語のみの固定形式で送信され、電子メールへのカスタマイズは許可されません。

デバイス登録が成功すると、ユーザーはプライマリ認証ファクタとしてパスワードを使用してデータベースにログインできます。パスワードが検証されると、データベース・サーバーは登録済アプリケーションにプッシュ通知を送信します。ユーザーがプッシュ通知を受け入れると、認証プロセスが完了し、ログイン・セッションが正常に確立されます。

SQLアクセス・トークン

Autonomous AI DatabaseでのSQLアクセス・トークン・タイプ認証は、ユーザーがSQL文を実行する前に、資格証明と2番目の要素(ワンタイムSQLアクセス・トークンまたはプッシュ通知)の両方を使用してアイデンティティを検証する必要があるMFAメソッドです。ユーザー名とパスワードを使用してログインした後、ユーザーはワンタイム・パスコードまたはプッシュ通知をリクエストする必要があります。これは、オーセンティケータ・アプリケーション(OMA)、電子メールまたはSlackを介して配信され、セッションを認証し、保護されたSQL文の実行を許可します。SQLアクセス・トークンMFAは、機密性の高いSQL文を正しい資格証明と検証済の第2要素の両方を持つユーザーのみが実行できるようにすることで、データベース・セキュリティを強化し、不正アクセスのリスクを軽減し、コンプライアンス要件をサポートします。

ノート

SQLアクセス・トークンMFAの場合、プッシュ通知はOMAでのみサポートされます。

ローカル・データベースのユーザー名/パスワードやOCI IAM、Azure Entra、Kerberosなどの外部アイデンティティ・プロバイダなどの標準認証方法を使用してAutonomous AI Databaseに接続した後、SQLアクセス・トークンのMFA認可フローを次に説明します。


autonomous-sqlaccesstoken-workflow.pngの説明が続きます
図autonomous-sqlaccesstoken-workflow.pngの説明

  1. SQLアクセス・トークンのリクエスト

    セッションが確立されたら、SQL操作を有効にするためにSQLアクセス・トークンをリクエストします。

  2. OTPまたはプッシュ通知の受信

    OracleがOTPを生成するのは、OTPベースのデリバリ・チャネル、電子メールまたはSlackを選択した場合のみです。これらのOTPは時間制限があり、失効する前に選択したチャネルから取得する必要があります。アプリケーションベース認証の場合、Oracle Mobile Authenticator (OMA)はサポートされている唯一のオーセンティケータ・アプリケーションであり、OTPを生成するかわりにプッシュ通知を2番目の要素として使用します。その結果、SQLアクセス・トークンMFAの場合、OTPは電子メールまたはSlackを介してのみ配信され、OMAはプッシュ通知を介して承認を提供します。

  3. セッションを認証します

    受信したOTPを入力してアイデンティティを確認し、SQLセッションをアクティブ化します。このステップは、電子メールまたはSlack OTP認証にのみ必要であり、かわりにプッシュ通知を使用するアプリケーションベース認証(OMA)を使用する場合には必要ありません。

  4. SQLステートメントの実行

    トークンの検証後、許可されたとおりにデータベースでSQL文を実行できます。

ノート

ログイン時MFAとSQLアクセス・トークンMFAの両方に対してユーザーを登録できます。この設定では、ユーザーは、ログイン時にMFAを完了し、モバイル・デバイスでプッシュ通知を承認し、SQL文を実行する前に、選択したデリバリ・チャネルを介してSQLアクセス・トークンを確認する必要があります。

前提条件

Autonomous AI DatabaseでMFAを有効にするための前提条件をリストします。

選択したMFAタイプに応じて、必要な設定ステップを実行します:

  • ログイン時間MFA: ログイン時間MFAは、OMAおよびDuoを使用したプッシュ通知を介してのみサポートされます。使用する前に、選択したアプリをモバイル・デバイスにダウンロード、インストールおよび構成します。

  • SQLアクセス・トークン: SQLアクセス・トークンに対して少なくとも1つのトークン・デリバリ・チャネルを構成する必要があります。サポートされている配信方法には、電子メール、SlackおよびOMAオーセンティケータがあります。

    • オーセンティケータ・アプリケーション: OMAをモバイル・デバイスにインストールします。サインインするたびにアクセスできるデバイスにMFAを設定する必要があります。別のユーザーがMFAを有効にすることはできません。

      MFAを有効にするには、モバイル・デバイスでOMAを使用して、データベース・アクションUIに表示されるQRコードをスキャンします。詳細は、「Oracle Mobile Authenticatorの構成」を参照してください。

    • 電子メール: 電子メール配信が有効であり、すべてのデータベース・ユーザーに有効な構成済電子メール・アドレスがあることを確認します。

      詳細は、Autonomous AI Databaseでの電子メールの送信を参照してください。

    • Slack: Slackプラグインを構成し、各ユーザーのSlack IDを登録して、Slackを介したOTP配信を有効にします。

      詳細は、Autonomous AI DatabaseからのSlack通知の送信を参照してください。

  • ユーザーをMFAに登録し、トークン属性を管理するには、ADMINユーザーとしてログインするか、DBMS_MFA_ADMINパッケージに対する必要な権限を持っている必要があります。

  • SQLアクセス・トークン・ワークフローの場合、MFAセッションを初期化し、SQLアクセス・トークンを検証するには、DBMS_MFAパッケージに対する必要な権限が必要です。

Autonomous AI Database用のMFAの構成

必要な資格証明の設定、通知チャネルの構成、LOGON MFAまたはSQL Access MFAへのユーザーの登録、SQLアクセス・トークンの管理など、Autonomous AI DatabaseのMFAを設定する方法について説明します。

トピック:

MFAの通知チャネルの構成

OTPまたはプッシュ通知を配信するために、MFAの通知チャネル(電子メール、Slack、Oracle Mobile Authenticator (OMA)など)を構成する方法について説明します。

通知チャネルは、ログイン時(LOGON)のMFAフローとSQLアクセス・トークンのMFAフローの両方で、プッシュ承認やOTPなどのユーザーにMFAチャレンジを配信するために使用されるメカニズムです。サポートされているチャネルには、電子メール、SMS、Slackおよびオーセンティケータ・アプリケーションが含まれ、各チャネルには、電子メール配信用のSMTP詳細やSlack用のSlackワークスペース構成など、特定の構成属性が必要であり、メッセージが意図したユーザーに安全かつ確実に配信されるようにします。

通知チャネルを構成する前に、使用するチャネルに必要な資格証明が設定されていることを確認します。一部のチャネルはLOGON MFA (OMAやDuoなど)にのみ適用され、他のチャネルはSQL Access Token MFA (OMA、Slack、電子メールなど)にのみ適用されるため、選択したMFAフローに必要なもののみを構成します。

次の表に、使用可能なMFA通知チャネルを要約し、各チャネルでサポートされるMFAタイプ(MFAログオンまたはSQLアクセス・トークンMFA、あるいはその両方)と、対応する通知方法(OTP配信またはプッシュ承認)を示します。

通知チャネル MFAログオン SQLアクセス・トークンMFA 通知メソッド

Eメール

はい(MFA登録Eメールのみ)

はい

SQLアクセス・トークン: 電子メールで配信されるOTP。

ログオン: 第2要素としてサポートされていません。Eメールは登録通知に対してのみ送信されます。

Slack

いいえ

はい

Slackを介して提供されるOTP。

Oracle Mobile Authenticator (OMA)

はい

はい

プッシュ通知の承認。OTPは生成されません。

Cisco Duo

はい

いいえ

Duoを介して通知をプッシュします。

DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATIONプロシージャを使用して、MFAメッセージの配信に使用される通知チャネル(SQLアクセス・トークンのチャレンジなど)を定義します。この手順では、電子メール、Slack、オーセンティケータなどのチャネル・タイプを指定し、セキュアで信頼性の高い配信に必要なチャネル固有の属性または資格証明参照を指定します。各チャネルには異なる要件があるため、指定する属性値は構成するチャネルによって異なります。チャネルごとに必要な入力については、次の例を参照してください。

電子メール通知

OracleがMFA関連の電子メールを送信できるように、電子メール資格証明オブジェクトおよびSMTP通知設定を構成します。これは、デバイス登録電子メールを含むMFAログオン設定(OMAおよびDuo)に必要です。これがないと、ユーザーは必要な登録通知を受信しません。電子メールはMFAログオンでサポートされている2番目の要素ではありません。電子メールOTP配信はSQLアクセス・トークンMFAでのみサポートされています。

MFAアクセス・トークンを送信するようにカスタム電子メール・プロバイダを構成するには、DBMS_CLOUD.CREATE_CREDENTIALプロシージャを使用してデータベースに電子メール・プロバイダ資格証明を作成する必要があります。次に例を示します。

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL(
       credential_name => 'EMAIL_CRED_01',
       username        => '<username>',
       password        => '<password>'
   );
END;
/
これにより、Autonomous AI Databaseとカスタム電子メール・プロバイダ間の通信を有効にするために必要な資格証明が設定されます。

アクセス制御リスト(ACL)を更新して、電子メールを送信するためにSMTPホストに接続するためのデータベース権限を付与します。次に例を示します。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
    host        => 'smtp.email.us-ashburn-1.oci.oraclecloud.com',
    lower_port  => 587,
    upper_port  => 587,
    ace         => xs$ace_type(
                     privilege_list  => xs$name_list('SMTP'),
                     principal_name  => 'ADMIN',
                     principal_type  => xs_acl.ptype_db
                   )
  );
END;
/
これにより、電子メールを送信するためにポート587のSMTPホストに接続できます。

作成した資格証明を使用して、MFAアクセス・トークンを配信するためのEメール・チャネルの設定を定義します。次に例を示します。

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'EMAIL',
    attributes       => JSON_OBJECT(
      'credential_name'                 VALUE 'EMAIL_CRED_01',
      'smtp_host'                       VALUE 'smtp.email.us-ashburn-1.oci.oraclecloud.com',
      'smtp_port'                       VALUE 465,
      'sender'                          VALUE 'mfa_alerts@example.com',
      'sender_email_display_name'       VALUE 'DB MFA ALERTS'
    )
  );
END;
/
これにより、MFAトークン配信の電子メール通知設定が構成され、電子メール・チャネルがカスタム資格証明にリンクされ、データベースが電子メールを介してワンタイム・パスコードを送信できるようになります。電子メールによるMFAトークン配信はSQLアクセスでのみ使用可能です。

Slack通知

資格証明を作成して、Slack統合の認証詳細を安全に格納します。次に例を示します。

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'SLACK_CRED',
    username        => 'username',
    password        => '<password>'
  );
END;
/
これにより、Slack統合での認証に必要な資格証明が登録されます。

アウトバウンドHTTPSコールのアクセス制御リスト(ACL)を更新して、データベースがSlackのAPIエンドポイントに接続できるようにします。次に例を示します。

BEGIN
  DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE (
    host           => 'slack.com',
    lower_port     => 443,
    upper_port     => 443,
    ace            => xs$ace_type(
                        privilege_list  => xs$name_list('http'),
                        principal_name  => 'ADMIN',
                        principal_type  => xs_acl.ptype_db
                      )
  );
END;
/
これにより、通知を送信するためにHTTPS経由でSlack (ポート443)に接続できます。

作成した資格証明を参照して、MFAトークン配信用のSlackチャネルを構成します。次に例を示します。

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'SLACK',
    attributes        => JSON_OBJECT(
      'credential_name' VALUE 'SLACK_CRED'
    )
  );
END;
/
これにより、Slack資格証明が通知チャネルにリンクされ、Slackを使用したMFAトークン配信が有効になります。

Oracle Mobile Authenticator (OMA)通知

OMAクライアントIDおよびクライアント・シークレットを安全に格納する資格証明を作成します。次に例を示します。

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'OMA_CRED',
    username        => '<username>',
    password        => '<password>'
  );
END;
/
これにより、OMAアプリケーションのクライアント資格証明がデータベースに登録されます。

OMA通知チャネルを定義し、作成した資格証明およびOMA APIエンドポイントに関連付けます。次に例を示します。

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'OMA',
    attributes        => JSON_OBJECT(
      'credential_name' VALUE 'OMA_CRED',
      'api_endpoint'    VALUE 'https://idcs-c*****************60.identity.oraclecloud.com'
    )
  );
END;
/
このステップでは、指定したエンドポイントを介してOracle Mobile Authenticatorを使用してMFAトークンを配信するようにデータベースを構成します。

Cisco DUO通知

DUO統合キーおよび秘密キーを安全に格納する資格証明を作成します。次に例を示します。

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DUO_CRED',
    username        => '<integrationkey>',
    password        => '<secretkey>'
  );
END;
/
これにより、DUOアプリケーションの統合キーおよび秘密キーがデータベース内の資格証明として登録されます。

DUO通知チャネルを設定するには、作成した資格証明に関連付けて、DUO APIエンドポイントを指定します。

BEGIN
  DBMS_MFA_ADMIN.CONFIGURE_NOTIFICATION(
    notification_type => 'DUO',
    attributes        => JSON_OBJECT(
      'credential_name' VALUE 'DUO_CRED',
      'api_endpoint'    VALUE 'api-855fd6a0.duosecurity.com'
    )
  );
END;
/
これにより、指定されたアプリケーション資格証明およびAPIエンドポイントを使用して、DUOを介してMFAトークンを配信するようにデータベースが構成されます。

ユーザーを登録

MFAのデータベース・ユーザーを登録するステップを示します。

通知チャネルを構成した後、次のステップは、既存のデータベース・ユーザーをMFAに登録することです。登録時に、MFAタイプを「ログイン時MFA」または「SQLアクセス・トークンMFA」に設定します。オプションで通知チャネルを指定できます。指定しない場合は、デフォルトで電子メールが使用されます。ただし、ログオン・タイプのMFAの場合、チャネルとしてOMAまたはDuoを指定する必要があります。オプションで、カスタム・トークン属性を設定して、ユーザーのSQLアクセス・トークンの動作をカスタマイズすることもできます。

DBMS_MFA_ADMIN.REGISTER_USERを使用して、既存のデータベース・ユーザーをMFAに登録します。ユーザーを登録するときは、MFA認証typeを設定して、有効にするフローを指定します。
  • データベース・サインイン時のログイン時MFAの場合はLOGON、または

  • トークンベースのMFAのSQLアクセス・トークン・タイプ。

オプションのattributes JSONを指定する場合、サポートされている属性はMFA認証タイプによって異なることに注意してください。たとえば、LOGONでは、オーセンティケータ・メソッド(auth_method => 'duo_push'など)などのログオン固有の設定がサポートされますが、SQLアクセス・トークンMFAにのみ適用されるduration_minなどのトークン妥当性属性はサポートされません。

詳細は、DBMS_MFA_ADMIN.REGISTER_USERを参照してください。

通知チャネルとしてOMAを使用してログイン時間MFA用に既存のデータベース・ユーザーSCOTTを登録する例

BEGIN  
  DBMS_MFA_ADMIN.REGISTER_USER(  
    username   => 'SCOTT',  
    type       => 'LOGON',  
    email      => 'scott@example.com',  
    attributes => JSON_OBJECT(  
                          'auth_method' VALUE 'oma_push')  
  );  
END;  
/

この例では、SCOTTがオーセンティケータにすでに登録されている場合、新しい登録Eメールは送信されません。SCOTTがまだ登録されていない場合、この例では、Oracle Mobile Authenticator (OMA)の登録リンクおよびQRコードを使用してscott@example.comにワンタイムEメールを送信することで、MFA登録を開始します。

SCOTTはOMAアプリをインストールし、リンクまたはQRコードを使用してデバイスの登録を完了します。登録後、SCOTTはパスワードを使用してログインし、OMAプッシュ通知を承認してLOGON MFA認証を完了します。

既存のデータベース・ユーザーSCOTTをログイン時間MFAに登録し、Duoを通知チャネルとして使用する例

BEGIN
  DBMS_MFA_ADMIN.REGISTER_USER(
    username   => 'SCOTT',
    type       => 'LOGON',
    email      => 'scott@example.com',
    attributes => JSON_OBJECT(
                    'auth_method' VALUE 'duo_push') 
  );
END;
/

この例では、SCOTTがオーセンティケータにすでに登録されている場合、新しい登録Eメールは送信されません。SCOTTがまだ登録されていない場合、この例では、登録リンクを使用して指定されたアドレスにワンタイムEメールを送信することでMFA登録を開始します。

SCOTTは Cisco Duoアプリをインストールし、リンクを使用してデバイスの登録を完了します。登録後、SCOTTはパスワードでログインし、Duoプッシュ通知を承認して、2要素認証でログインを完了します。

ノート

ログイン時のMFA (LOGON)では、auth_methodのみがサポートされている属性です。

Slackを通知チャネルとして使用して、SQLアクセス・トークンMFAのSCOTTを登録する例

BEGIN
  DBMS_MFA_ADMIN.REGISTER_USER(
    username   => 'SCOTT',
    type       => 'SQL ACCESS',
    email      => 'scott@example.com',
    attributes => JSON_OBJECT(
      'duration_min'   VALUE 720,
      'read_only'      VALUE TRUE,
      'roles'          VALUE JSON_ARRAY('DEVELOPER_ROLE', 'INFRA_ROLE'),
      'scope'          VALUE 'SESSION',
      'slack_member_id' VALUE '<slack_member_id>'    
    )
  );
END;
/

この例では、ユーザーSCOTTをSQL Access MFAに登録します。トークン期間を720分に設定し、読取り専用アクセス権を付与し、特定のロールを関連付け、トークン・スコープをセッションベースとして定義し、通知のSlackメンバーIDを指定します。

ノート

read_onlyは、scopeSESSIONに設定されている場合にのみ適用できます。scopeSESSIONでない場合、read_only属性はサポートされません。

OMAを通知チャネルとして使用してSQLアクセス・トークンMFAのSCOTTを登録する例

BEGIN
  DBMS_MFA_ADMIN.REGISTER_USER(
    username   => 'scott',
    type       => 'SQL ACCESS',
    email      => 'scott@example.com',
    attributes => JSON_OBJECT(
      'scope'            VALUE 'USER',
      'duration_min'     VALUE 5,
      'idle_timeout_min' VALUE 2,
      'auth_method'      VALUE 'OMA_PUSH'
  );
END;
/

この例では、ユーザーSCOTTをSQLアクセス・トークンMFAに登録します。また、トークンが5分間有効で、非アクティブ状態が2分後に失効し、OMAプッシュ通知を使用した承認が必要な短期間存続するように構成します。

ノート

ログオンMFAとSQLアクセス・トークンMFAの両方に同じユーザーを登録するには、同じ電子メール・アドレスに別々に登録します。このアプローチにより、ユーザーは必要に応じて複数のMFAタイプを使用できます。

SQLアクセス・トークン認証のセッションの検証

SQLアクセス・トークン認証のセッションを検証するステップを示します。

SQLアクセス・トークン認証によって保護されているセッションでSQL文を実行するには、構成済の通知チャネルを介して配信されるワンタイム・パスコードを使用してセッションを検証する必要があり、ユーザーはDBMS_MFAに対する必要な権限を持っている必要があります。

セッションを検証するには:
  1. 標準資格証明を使用してデータベースにログインします。
    CONNECT scott/<password>@<adbs_connect_string>;
  2. SQLステートメントを実行しようとしました
    SELECT COUNT(*) FROM SCOTT.EMP;

    SQLアクセス・トークンの検証が保留中の場合は、ORA-64660: Token Authorization is not complete for the user or the sessionなどのエラーが発生します。

  3. セッションを初期化し、SQLアクセス・トークンをリクエストします。構成済の通知チャネルに応じて、このプロセスによってワンタイム・パスコード(OTP)またはプッシュ通知のいずれかが送信されます。
    BEGIN
    DBMS_MFA.INITIALIZE_SESSION(
      email => 'scott_alert@example.com'
    );
    END;
    /

    詳細は、INITIALIZE_SESSIONプロシージャを参照してください。

  4. セッションでトークンを設定します。ユーザーがMFAのオーセンティケータ・アプリケーションを使用するように登録されている場合、このステップは不要です。この場合、ユーザーはプッシュ通知を受信し、単に認証リクエストを承認します。
    BEGIN
      DBMS_MFA.SET_TOKEN(
        token => '98475683'
      );
    END;
    /

    SET_TOKENプロシージャを参照してください。

  5. トークンの検証後、許可されたとおりにSQL文を実行できます。
    SELECT COUNT(*) FROM SCOTT.EMP;
    
    
    Count
    _________
    15

MFAユーザーおよびトークン属性の管理

この項では、MFAに登録されているユーザーを管理する方法について説明します。これには、MFAアクセスが不要になったユーザーの登録解除方法や、トークン属性を構成または更新する方法が含まれます。

トピック:

トークン属性の設定

この項では、グローバル・デフォルト(SQLアクセス・トークンのみ)およびユーザーごとのオーバーライド(ログオンおよびSQLアクセス・トークンの両方)を使用して、スコープ、有効期間、アイドル・タイムアウト、配信方法、アクセス制限などのMFAトークンの動作を構成する方法について説明します。

トークン属性は、トークン・スコープ、有効期間、アイドル・タイムアウト、配信方法、アクセス制限など、SQLアクセス・トークンの動作を制御します。これらの属性は、グローバルまたはユーザーごとの2つのレベルで構成できます。
  • グローバル・トークン属性は、SQLアクセス・トークンMFAに登録されているすべてのユーザーのデフォルトのトークン動作を定義します。グローバルに設定した場合、これらのデフォルトは、ユーザー固有の設定によって明示的にオーバーライドされないかぎり、適格なすべてのユーザーに適用され、データベース全体で一貫したセキュリティ・ポリシーを適用できます。グローバル・トークン属性は、SQLアクセス・トークンに対してのみ設定できます。
  • ユーザー固有のトークン属性を使用すると、個々のユーザーのトークン動作をカスタマイズできます。これらの設定はグローバル・デフォルトをオーバーライドし、ユーザーのロールおよびアクセス要件に基づいてより厳密またはより柔軟なコントロールを適用するために使用できます。

グローバル・トークン属性とユーザー・レベルのトークン属性の両方を使用すると、一元化されたセキュリティ施行と、個々のアクセス・ニーズを満たす柔軟性のバランスをとることができます。

グローバルSQLアクセス・トークン属性の設定

DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTESプロシージャを使用して、グローバル・デフォルトSQLアクセス・トークン属性を構成します。このプロシージャは、SQLアクセス・トークンMFAに登録されたユーザーに対してSQLアクセス・トークンが発行されるたびに、データベースが自動的に適用されるトークン属性値のグローバル・セット(JSONとして指定)を設定します。また、ユーザー固有のトークン属性を設定して、必要に応じてこれらのグローバル・デフォルトをオーバーライドすることもできます。

BEGIN
  DBMS_MFA_ADMIN.SET_GLOBAL_TOKEN_ATTRIBUTES(
    attributes => '{
      "duration_min": 60,
      "scope": "session",
      "idle_timeout_min": 15,
      "read_only": false
    }'
  );
END;
/

これにより、トークン期間、スコープ、アイドル・タイムアウト、読取り専用アクセスなど、SQLアクセス・トークンMFAに登録されているすべてのユーザーのグローバル・トークン属性が設定されます。これらのグローバル属性はデフォルト設定として機能し、ユーザー固有の属性がオーバーライドするように定義されていないかぎり、SQLアクセス・トークンMFAに対して有効になっているすべてのユーザーに自動的に適用されます。

詳細は、SET_GLOBAL_TOKEN_ATTRIBUTESプロシージャを参照してください。

ログオンおよびSQLアクセス・トークンの両方のトークン属性を設定します

DBMS_MFA_ADMIN.SET_ATTRIBUTESおよびDBMS_MFA_ADMIN.SET_ATTRIBUTEプロシージャを使用して、特定のユーザーのトークン属性を設定します。これらのユーザー・レベルの設定は、指定されたMFAタイプ(LOGONやSQL ACCESS TOKENなど)に適用され、適用可能なデフォルトがオーバーライドされます。
  • DBMS_MFA_ADMIN.SET_ATTRIBUTESを使用して、ユーザーに対して1つ以上のトークン属性を1回のコールで設定します(属性名/値ペアのJSONオブジェクトを渡す)。
  • DBMS_MFA_ADMIN.SET_ATTRIBUTEを使用して、ユーザーに対して一度に1つのトークン属性を設定します(単一のattribute_nameおよびattribute_valueを指定)。
  • auth_methodは、セッションのログイン・チャレンジ(OMA、Duo、Slackなど)を配信および検証するために使用される構成済MFAプロバイダを示します。ログイン時MFAの場合、auth_methodのみがサポートされている属性です。その他のMFA関連属性は、ログイン時MFAには適用できません。

例5-1 DBMS_MFA_ADMIN.SET_ATTRIBUTESを使用した、指定したユーザーの1つ以上のトークン属性の設定

ユーザー名、MFAタイプおよび属性名と値を含むJSON attributesオブジェクトを指定します。指定された設定は、そのユーザーに適用され、適用可能なデフォルトがオーバーライドされます。

BEGIN
  DBMS_MFA_ADMIN.SET_ATTRIBUTES (
    username   => 'SCOTT3',
    type       => 'SQL ACCESS',
    attributes => JSON_OBJECT(
      'duration_min'     VALUE 30,
      'email'            VALUE 'scott3_alerts@example.com',
      'scope'            VALUE 'session',
      'idle_timeout_min' VALUE 20
    )
  );
END;
/

この例では、SCOTT3のユーザー固有のSQLアクセス・トークン属性を構成し、30分のトークン期間、20分のアイドル・タイムアウト、セッション・スコープおよびトークン配信に使用される電子メール・アドレスを設定し、グローバル・デフォルトをオーバーライドします。

詳細は、SET_ATTRIBUTESプロシージャを参照してください。

例5-2 DBMS_MFA_ADMIN.SET_ATTRIBUTEを使用した、指定したユーザーの単一のトークン属性の設定

ユーザー名、MFAタイプ、電子メールID、属性名および属性値を指定します。この設定は、そのユーザーに適用され、適用可能なデフォルトがオーバーライドされます。

BEGIN
  DBMS_MFA_ADMIN.SET_ATTRIBUTE(
    username        => 'SCOTT4',
    type            => 'SQL ACCESS',
    email           => 'scott4_alerts@example.com',
    attribute_name  => 'duration_min',
    attribute_value => '25'
  );
END;
/

この例では、SCOTT4duration_min属性を設定し、SQLアクセス・トークンの有効期間を25分に設定し、配信電子メール・アドレスを指定します。このユーザー・レベルの設定は、適用可能なデフォルト(グローバルSQLアクセス・トークンのデフォルト(構成されている場合)を含む)をオーバーライドします。

詳細は、SET_ATTRIBUTEプロシージャを参照してください。

ユーザーの登録解除

DBMS_MFA_ADMIN.DEREGISTER_USERプロシージャを使用して、MFAからデータベース・ユーザーを削除する方法を示します。

ユーザーを登録解除すると、指定したスキーマのアクセス・トークンが無効になり、ユーザーのMFA強制が停止されます。

次に例を示します。
BEGIN
  DBMS_MFA_ADMIN.DEREGISTER_USER(
    username => 'SCOTT',
    type     => 'SQL ACCESS',
    email    => 'scott@example.com'
  );
END;
/

これにより、ユーザーSCOTTがSQL Access MFAから削除されます。MFA強制およびアクセス・トークンは、このユーザーには不要になりました。ただし、SCOTTが複数の電子メールを使用してMFAに登録されている場合は、完全な削除のために各エントリを個別に登録解除する必要があります。

詳細は、DEREGISTER_USERプロシージャを参照してください。

Autonomous AI Databaseでのマルチファクタ認証の制限

Autonomous AI Databaseでの多要素認証の制限を示します。

Autonomous AI Databaseでマルチファクタ認証を使用する場合、次の制限が適用されます:
  • SQLアクセス・トークンは、RAS (リモート・アプリケーション・サービス)ユーザーではサポートされていません。これらは非対話型のアプリケーション・アカウントであり、MFAに必要な2番目の要素を提供できません。

  • アプリケーション・コンティニュイティまたは透過的アプリケーション・コンティニュイティでは、セッション継続性は維持されません。ユーザー・セッションが終了すると、SQLアクセス・トークンが有効であっても、セッションは切断されます。

  • スケジューラ・ジョブは、有効な認証済セッション内に作成する必要があります。作成後、これらのジョブは独立して実行され、SQLアクセス・トークンを実行する必要はありません。

  • SQLアクセス・トークンMFAに登録されていないユーザーは、SQLアクセス・トークンMFAに登録されているユーザーが所有するデータベース・リンクを介してSQLを実行できません。これは、SQLアクセス・トークンがデータベース・リンク間で伝播されないためです。Oracleでは、SQLアクセス・トークンMFA登録ユーザーが所有するデータベース・リンクを回避することをお薦めします。かわりに、SQLアクセス・トークンMFA用に構成されていない専用のデータベース・リンク所有者を使用してください。
  • 登録されたユーザーは、SQLアクセス・トークンを設定した後は、独自のスキーマのインポート/エクスポートを実行できません。SQL文を実行するにはトークン検証が必要なため、エクスポート操作はトークン認可エラーで失敗します。
  • SQL ACCESS登録済ユーザーは、DBActionsツールでの使用はサポートされていません。