Autonomous DatabaseでのSaaSの緊急アクセス

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

Autonomous DatabaseでのBreak Glass Accessについて

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

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

製品にAutonomous Databaseを使用しているexample.comという名前のSaaSプロバイダについて考えてみます。通常の操作では、SaaSプロバイダexample.comは、SaaS顧客ごとにAutonomous Databaseインスタンスを作成します。このモデルでは、たとえばScottという名前の顧客であるSaaS顧客は、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です。

緊急アクセスAPI

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

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

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

Break Glass操作には、次の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のパスワード要件に準拠している必要があります。詳細については、About User Passwords on Autonomous Databaseを参照してください。

secretId

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

Oracle Cloud Infrastructure Vaultでシークレットとして指定するパスワードは、Autonomous Databaseのパスワード要件に準拠している必要があります。詳細については、About User Passwords on 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を使用してパスワードの値を指定し、passwordSAAS_ADMINを有効にします。

    次に例を示します。

    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シークレットを使用したBreak Glassアクセスの有効化

シークレットがOracle Cloud Infrastructure Vaultに格納されている場合、Autonomous Database CLIまたはAPIを使用して、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によって、データベースへのアクセスに使用されたパスワードまたはシークレットがローテーションされます。

「Break Glass Access」

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

割れ目ガラス アクセスのためのノート:

  • 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ユーザーは存在しません。作成されて削除されたか、作成されなかった可能性があります。