Autonomous DatabaseでのSaaSに対する緊急アクセス

Autonomous Databaseでは、SaaSプロバイダに対する緊急アクセスがサポートされています。緊急アクセスにより、SaaSオペレーション・チームは、SaaS顧客から明示的に認可されている場合、顧客のデータベースにアクセスしてクリティカルまたは緊急操作を実行できます。

Autonomous Databaseでの緊急アクセスについて

Autonomous Databaseでの緊急アクセスでは、SaaSプロバイダがサポートされます。SaaS組織は、SaaSオペレーション・チーム・メンバーが顧客によって明示的に認可されている場合に、顧客のデータベースにアクセスできるようにするプロシージャを定義します。

Example.comを使用したBreak Glassのサンプル・ユース・ケース

製品にAutonomous Databaseを使用しているexample.comという名前のSaaSプロバイダについて考えてみます。通常の操作では、SaaSプロバイダexample.comによって、SaaS顧客ごとにAutonomous Databaseインスタンスが作成されます。このモデルでは、SaaS顧客(たとえば、Scottという名前の顧客)は、example.com製品のエンド・ユーザー(およびデータがAutonomous Databaseインスタンスに格納されるSaaS顧客)です。プロバイダexample.comは、Scottのすべてのデータを作成してAutonomous Databaseインスタンスに格納し、顧客Scottはデータベースに直接アクセスできません。

このSaaSモデルの概要は次のとおりです。

  • Autonomous Databaseインスタンスを作成するOracleの顧客は、SaaS組織(example.com)です。

  • SaaSプロバイダはexample.comです。

  • SaaSの顧客はScottです。

アプリケーションのパフォーマンスに関して問題が発生した場合、またはSaaSオペレーション・チームによるトラブルシューティングを必要とするその他の重要な問題がある場合、顧客Scottは、運用チームがトラブルシューティングのためにScottのデータベースにアクセスできるようにアクセス権を付与できます。SaaSオペレーション・チームは、SaaS定義の承認プロセス(つまり、example.comが顧客であるScottから権限を受け取った後)を介して、ScottのAutonomous Databaseインスタンスへの直接アクセスを確立する権限のみを持ちます。

Break GlassとAutonomous Database SAAS_ADMINユーザー

SaaSが顧客のAutonomous Databaseインスタンスで緊急アクセスAPIを起動すると、SAAS_ADMINユーザーが有効になります。その後、SaaS操作チームは、指定されたロール・セットを持つSAAS_ADMINユーザーを使用して、限られた期間、インスタンスにアクセスできます。

デフォルトでは、SAAS_ADMINユーザーはロックされています。SaaS組織で定義された承認プロセスを使用すると、SAAS_ADMINユーザーを有効にして、Autonomous Databaseインスタンスへのアクセスを許可できます。ブレークガラス名は、ユーザーがアラームをアクティブにする前に小さなガラス窓のペインを壊す必要がある手動の火災報知器から来ています(誤ってアラームがトリガーされないようにするためにガラスを壊す必要があります)。同様に、SAAS_ADMINユーザーは通常、データベースにアクセスせず、アクセスには事前定義済の承認プロセスが必要です。

付与されるアクセスのタイプに応じて、SAAS_ADMINユーザーはデータベースにアクセスして問題を調査したり、緊急イベントやその他の異常なイベントに関連する変更を行うことができます。緊急アクセスが期限切れになった場合、またはアクセスが明示的に無効になっている場合は、SAAS_ADMINアカウントのパスワード/シークレットがただちにローテーションされ、SAAS_ADMINユーザー・アクセスが取り消されます。SAAS_ADMINユーザーが実行するすべてのアクションが監査されます。

SAAS_ADMINユーザーは、次の3つのアクセス・タイプのいずれかで有効になります。

  • read-only: インスタンスへの読取り専用アクセスを提供します。これはデフォルトのアクセス・タイプで、デフォルトのロールCREATE SESSIONSELECT ANY TABLESELECT ANY DICTIONARYSELECT_CATALOG_ROLEが含まれます。
  • read/write: インスタンスへの読取り/書込みアクセスを提供します。このタイプのデフォルトのロールは、CREATE SESSIONSELECT ANY TABLESELECT ANY DICTIONARYSELECT_CATALOG_ROLEINSERT ANY TABLEおよびUPDATE ANY TABLEです。
  • admin: インスタンスへの管理者アクセスを提供します。このタイプのデフォルトのロールは、CREATE SESSIONおよびPDB_DBAです。

Break Glass API

SAAS_ADMINユーザーは、コマンドライン・インタフェース(CLI)またはAutonomous Database REST APIを使用してのみ有効化および無効化されます。

REST APIおよび署名リクエストの利用の詳細は、REST APIおよびセキュリティ資格証明に関する項を参照してください。

SDKについては、ソフトウェア開発キットとコマンドライン・インタフェースを参照してください。

緊急アクセス操作には、次のAPIを使用します。

  • SAAS_ADMINを有効または無効にするには、configureSaasAdminUserを使用します。

  • SAAS_ADMINユーザーが有効になっているかどうかを確認するには、getSaasAdminUserStatusを使用します。

緊急アクセスの有効化

SAAS_ADMINを使用してデータベースにアクセスする認可が組織で定義されたプロシージャによって承認された後、Autonomous Database CLIまたはAPIを使用してSAAS_ADMINユーザーを有効にします。

SAAS_ADMINユーザーを有効にするには、自律型データベースの管理権限が必要です。

SAAS_ADMINユーザーがデータベースにアクセスできるようにする前に、必須パラメータの値を取得する必要があります。

パラメータ 摘要
isEnabled

ブール値を示します。有効にするには、TRUEを使用します。

password

SAAS_ADMINユーザーのパスワードを示します。secretIdを指定した場合、passwordは指定できません。

パラメータとして指定するパスワードは、Autonomous Databaseのパスワード要件に準拠している必要があります。詳細は、「Autonomous Databaseのユーザー・パスワードについて」を参照してください。

secretId

シークレットのOracle Cloud Infrastructure VaultシークレットOCIDの値を指定します。passwordを指定した場合、secretIdは指定できません。詳細は、Vaultの概要を参照してください。

Oracle Cloud Infrastructure Vaultでシークレットとして指定するパスワードは、Autonomous Databaseのパスワード要件に準拠している必要があります。詳細は、「Autonomous Databaseのユーザー・パスワードについて」を参照してください。

secretVersionNumber

secretIdで指定されたシークレットのバージョン番号を指定します。このパラメータはオプション。デフォルトでは、最新のシークレット・バージョンが使用されます。このパラメータは、secretIdも指定されている場合にのみ適用されます。

accessType

read-onlyread/writeまたはadminのいずれか。デフォルトはread-onlyです。

duration

1時間から24時間の範囲で期間を時間単位で指定します。デフォルトは1時間です。

Autonomous DatabaseインスタンスでSAAS_ADMINユーザーを有効にするには、管理者が記述したOCI Identity and Access Managementポリシー・ステートメントを使用して、必要なアクセスを定義する必要があります。

次のポリシーが必要です:

Allow group Group_Name to manage autonomous-databases in compartment Compartment_Name

詳細は、Autonomous DatabaseのIAMポリシーおよびポリシーの開始を参照してください。

トピック

パスワードによる緊急アクセスの有効化

Autonomous Database CLIまたはAPIを使用して、パスワードでSAAS_ADMINを有効にします。

  1. APIまたはCLIを使用し、パスワードの値を指定して、SAAS_ADMINpasswordで有効にします。

    たとえば:

    POST https://dbaas-api.svc.ad3.us-phoenix-1/20160918/autonomousDatabases/ocid1.autonomousdatabase.oc1.phx.uniqueId/actions/configureSaasAdminUser
    
    {  "isEnabled": true,
       "password": password,
       "accessType": "READ_ONLY",
       "duration": 17
    } 

    詳細については、configureSaasAdminUserを参照してください。

  2. SAAS_ADMINユーザーが有効になっていることを確認します。
    POST https://dbaas-api.svc.ad3.us-phoenix-1/20160918/autonomousDatabases/ocid1.autonomousdatabase.oc1.phx.uniqueId/actions/getSaasAdminUserStatus
    
    {    "isEnabled": true,
         "accessType": "READ_ONLY",
         "timeSaasAdminUserEnabled": "2023-11-23T01:59:07.032Z"
    }
    

    このレスポンスは、SAAS_ADMINユーザーが有効になっており、アクセス・タイプがREAD_ONLYであることを示しています。タイムスタンプは、SAAS_ADMINが有効になっている時間(時間はUTC)を示します。

    詳細については、getSaasAdminUserStatusを参照してください。

Vaultシークレットを使用した緊急アクセスの有効化

Autonomous Database CLIまたはAPIを使用して、シークレットがOracle Cloud Infrastructure Vaultに格納されるときに、secretIdSAAS_ADMINを有効にします。

secretIdを指定する場合、Autonomous DatabaseがOracle Cloud Infrastructure Vaultのシークレットに到達するには、次の条件を適用する必要があります:

  • シークレットは、currentまたはprevious状態である必要があります。

  • 特定のコンパートメント内の特定のシークレットへのREADアクセスを許可する適切なユーザー・グループ・ポリシーが必要です。たとえば:

    Allow userGroup1 to read secret-bundles in compartment training

Oracle Cloud Infrastructure Vaultに格納されたシークレットでsecretIdを使用してSAAS_ADMINを有効にするには:

  1. APIまたはCLIを使用して、secretIdのOCID値を指定します。

    たとえば:

    POST https://dbaas-api.svc.ad3.us-phoenix-1/20160918/autonomousDatabases/ocid1.autonomousdatabase.oc1.phx.uniqueId/actions/configureSaasAdminUser
    
    {  "isEnabled": true,
       "secretId": "ocid1.key.co1.ap-mumbai-1.example..aaaaaaaauq5ok5nq3bf2vwetkpqsoa",
       "accessType": "READ_ONLY",
       "duration": 20
    }

    シークレット・バージョンの指定はオプションです。secretVersionNumberを使用してAPIコールでシークレット・バージョンを指定すると、指定したシークレット・バージョンが使用されます。シークレット・バージョンを指定しない場合、コールでは最新のシークレット・バージョンが使用されます。

    詳細については、configureSaasAdminUserを参照してください。

  2. SAAS_ADMINユーザーが有効になっていることを確認します。

    たとえば:

    POST https://dbaas-api.svc.ad3.us-phoenix-1/20160918/autonomousDatabases/ocid1.autonomousdatabase.oc1.phx.uniqueId/actions/getSaasAdminUserStatus
    
    {    "isEnabled": true,
         "accessType": "READ_ONLY",
         "timeSaasAdminUserEnabled": "2023-11-23T01:59:07.032Z"
    }
    

    このレスポンスは、SAAS_ADMINユーザーが有効になっており、アクセス・タイプがREAD_ONLYであることを示しています。タイムスタンプは、ユーザーが有効になった時間(時間はUTC)を示します。

    詳細については、getSaasAdminUserStatusを参照してください。

緊急アクセスの無効化

Autonomous Database CLIまたはAPIを使用して、SAAS_ADMINユーザー・アクセスを無効にします。

デフォルトでは、SAAS_ADMINが有効なときにdurationパラメータが設定されていない場合、アクセスは1時間後に期限切れになります。SAAS_ADMINが有効なときにdurationパラメータが設定されている場合、アクセスは指定されたduration時間後に期限切れになります。デフォルトの有効期限または指定した期間に基づいてアクセスを期限切れにするかわりに、configureSaasAdminUserを使用してSAAS_ADMINユーザー・アクセスを明示的に無効にできます。

Autonomous DatabaseインスタンスでSAAS_ADMINユーザーを無効にするには、管理者が記述したOCI Identity and Access Managementポリシー・ステートメントを使用して、必要なアクセスを定義する必要があります。

次のポリシーが必要です:

Allow group Group_Name to manage autonomous-databases in compartment Compartment_Name

詳細は、Autonomous DatabaseのIAMポリシーおよびポリシーの開始を参照してください。

  1. SAAS_ADMINユーザー・アクセスを無効にします。

    たとえば:

    POST https://dbaas-api.svc.ad3.us-phoenix-1/20160918/autonomousDatabases/ocid1.autonomousdatabase.oc1.phx.uniqueId/actions/configureSaasAdminUser
    {
      "isEnabled": false
    }

    詳細は、configureSaasAdminUser APIを参照してください。

  2. SAAS_ADMINユーザーが無効になっていることを確認します。

    たとえば:

    POST https://dbaas-api.svc.ad3.us-phoenix-1/20160918/autonomousDatabases/ocid1.autonomousdatabase.oc1.phx.uniqueId/actions/getSaasAdminUserStatus
    
    {    "isEnabled": false
    }
    

    このレスポンスは、SAAS_ADMINユーザーが無効であることを示します。

    詳細については、getSaasAdminUserStatusを参照してください。

SAAS_ADMINユーザーを無効にすると、データベースへのアクセスが取り消され、Autonomous Databaseによって、データベースへのアクセスに使用されたパスワードまたはシークレットがローテーションされます。

緊急アクセスに関するノート

緊急アクセス用のノートを提供します。

ブレーク・ガラス・アクセスのノート:

  • SAAS_ADMINを有効にするときに指定したdurationは、指定した時間が経過するまで、またはSAAS_ADMINユーザーを明示的に無効にするまで適用されます。この値は、SAAS_ADMINユーザーを有効にした後は変更できません。

  • Always Free Autonomous Databaseでは、SAAS_ADMINユーザーによるアクセスはサポートされていません。

  • DBA_CLOUD_CONFIGビューは、SAAS_ADMINユーザーに関する情報を提供します。

    たとえば、次の問合せを使用して、SAAS_ADMINユーザーのステータスに関する情報を取得します。

    SELECT PARAM_VALUE FROM DBA_CLOUD_CONFIG WHERE
                 param_name ='saas_admin_access' order by 1;

    auth_revokerの値が存在することは、アクセスが取り消されたことを意味し、アクセスを取り消したユーザーを示します。

    auth_endは、planned時間を示します。認可が取り消された後、SAAS_ADMINユーザーが有効化されたときに指定されたdurationの終了時に認可が期限切れになった場合、planned時間はactual時間と同じになります。plannedactual時間が異なる場合、これはdurationの有効期限が切れる前にSAAS_ADMIN認可が取り消されたことを意味します。

    たとえば、SAAS_ADMINが2時間の期間で有効になっており、API configureSaasAdminUserをコールしてSAAS_ADMINユーザーを無効にして1時間のアクセスを無効にすると、auth_end plannedactualの時間は異なります。

    この問合せに行が表示されない場合、SAAS_ADMINユーザーは存在しません。作成して削除したか、作成されなかった可能性があります。