はじめに
OCI Vaultのシークレットを使用してAutonomous Databaseのadminユーザのパスワードを設定することができるようになったので、試してみました。
これにより、OCI CLIやAPIを使用してAutonomous Databaseをデプロイするスクリプトを作成する際に、スクリプトにadminユーザのパスワードを埋め込む必要がなくなるため、セキュリティが向上します。
1.ボールトの作成
2.マスター暗号化キーの作成
1.で作成したボールト「DemoVault」内にAES256ビットのマスター暗号化キー「MyMasterEncryptionKey」を作成します。
3.シークレットの作成
1.で作成したボールト「DemoVault」内にシークレット「MySecretForADBadmin」を作成します。
暗号化キーとして2.で作成した「MyMasterEncryptionKey」を、シークレット・タイプとして「プレーン・テキスト」を指定し、シークレット・コンテンツとしてadminユーザのパスワードとして設定する文字列(ここではDemo#1Demo#1)を入力します。
作成したシークレットの名前をクリックして、シークレットの詳細画面に移動します。
シークレットのOCIDをコピーしてメモしておきます。
4.Autonomous Databaseの作成
OCI CLIを使用して、Autonomous Databaseを作成します。
adminユーザのパスワードをシークレットを使用して指定する際は、パラメータ"--secret-id"に、3.で作成したシークレットのOCIDを指定します。
[opc@ocicli ~]$ oci db autonomous-database create --db-workload DW --compartment-id ocid1.compartment.oc1..aXXXXXXXXXXXXXXXXXXXXXXXXXXXXq --display-name secrettest --db-name secrettest --cpu-core-count 1 --data-storage-size-in-tbs 1 --secret-id ocid1.vaultsecret.oc1.ap-tokyo-1.axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxa
{
"data": {
"actual-used-data-storage-size-in-tbs": null,
"allocated-storage-size-in-tbs": null,
"apex-details": null,
"are-primary-whitelisted-ips-used": null,
"autonomous-container-database-id": null,
"autonomous-maintenance-schedule-type": "REGULAR",
"available-upgrade-versions": null,
"backup-config": {
"manual-backup-bucket-name": null,
"manual-backup-type": "NONE"
},
"backup-retention-period-in-days": null,
"character-set": null,
"compartment-id": "ocid1.compartment.oc1..aXXXXXXXXXXXXXXXXXXXXXXXXXXXXq",
"compute-count": 1.0,
"compute-model": "OCPU",
"connection-strings": {
"all-connection-strings": null,
"dedicated": null,
"high": null,
"low": null,
"medium": null,
"profiles": null
},
"connection-urls": {
"apex-url": null,
"database-transforms-url": null,
"graph-studio-url": null,
"machine-learning-notebook-url": null,
"machine-learning-user-management-url": null,
"mongo-db-url": null,
"ords-url": null,
"sql-dev-web-url": null
},
"cpu-core-count": 1,
"customer-contacts": null,
"data-safe-status": "NOT_REGISTERED",
"data-storage-size-in-gbs": 1024,
"data-storage-size-in-tbs": 1,
"database-edition": "ENTERPRISE_EDITION",
"database-management-status": null,
"dataguard-region-type": null,
"db-name": "secrettest",
"db-tools-details": [
{
"compute-count": null,
"is-enabled": true,
"max-idle-time-in-minutes": null,
"name": "APEX"
},
{
"compute-count": null,
"is-enabled": true,
"max-idle-time-in-minutes": null,
"name": "DATA_TRANSFORMS"
},
{
"compute-count": null,
"is-enabled": true,
"max-idle-time-in-minutes": null,
"name": "DATABASE_ACTIONS"
},
{
"compute-count": null,
"is-enabled": true,
"max-idle-time-in-minutes": null,
"name": "GRAPH_STUDIO"
},
{
"compute-count": null,
"is-enabled": false,
"max-idle-time-in-minutes": null,
"name": "MONGODB_API"
},
{
"compute-count": null,
"is-enabled": true,
"max-idle-time-in-minutes": null,
"name": "OML"
},
{
"compute-count": null,
"is-enabled": true,
"max-idle-time-in-minutes": null,
"name": "ORDS"
}
],
"db-version": null,
"db-workload": "DW",
"defined-tags": {},
"display-name": "secrettest",
"failed-data-recovery-in-seconds": null,
"freeform-tags": {},
"id": "ocid1.autonomousdatabase.oc1.ap-tokyo-1.axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxq",
"infrastructure-type": null,
"is-access-control-enabled": null,
"is-auto-scaling-enabled": false,
"is-auto-scaling-for-storage-enabled": false,
"is-data-guard-enabled": false,
"is-dedicated": false,
"is-free-tier": false,
"is-local-data-guard-enabled": false,
"is-mtls-connection-required": true,
"is-preview": false,
"is-reconnect-clone-enabled": null,
"is-refreshable-clone": null,
"is-remote-data-guard-enabled": false,
"key-history-entry": null,
"key-store-id": null,
"key-store-wallet-name": null,
"kms-key-id": "ORACLE_MANAGED_KEY",
"kms-key-lifecycle-details": null,
"kms-key-version-id": null,
"license-model": "BRING_YOUR_OWN_LICENSE",
"lifecycle-details": null,
"lifecycle-state": "PROVISIONING",
"local-standby-db": null,
"max-cpu-core-count": null,
"memory-per-oracle-compute-unit-in-gbs": null,
"ncharacter-set": null,
"nsg-ids": null,
"ocpu-count": null,
"open-mode": null,
"operations-insights-status": "NOT_ENABLED",
"peer-db-ids": null,
"permission-level": null,
"private-endpoint": null,
"private-endpoint-ip": null,
"private-endpoint-label": null,
"provisionable-cpus": null,
"refreshable-mode": null,
"refreshable-status": null,
"role": null,
"scheduled-operations": null,
"service-console-url": null,
"source-id": null,
"standby-db": null,
"standby-whitelisted-ips": null,
"subnet-id": null,
"supported-regions-to-clone-to": null,
"system-tags": {},
"time-created": "2023-03-02T03:46:14.980000+00:00",
"time-data-guard-role-changed": null,
"time-deletion-of-free-autonomous-database": null,
"time-local-data-guard-enabled": null,
"time-maintenance-begin": null,
"time-maintenance-end": null,
"time-of-last-failover": null,
"time-of-last-refresh": null,
"time-of-last-refresh-point": null,
"time-of-last-switchover": null,
"time-of-next-refresh": null,
"time-reclamation-of-free-autonomous-database": null,
"time-until-reconnect-clone-enabled": null,
"total-backup-storage-size-in-gbs": null,
"used-data-storage-size-in-tbs": null,
"vault-id": null,
"whitelisted-ips": null
},
"etag": "3543d6e5",
"opc-work-request-id": "ocid1.coreservicesworkrequest.oc1.ap-tokyo-1.abxhiljrgwqh2md52v5scklpduw2d7vxm2cedwwkjqcnogrgrwzr4ga3di4a"
}
[opc@ocicli ~]$
コンソールを確認すると、Autonomous Databaseのプロビジョニングが開始されたことが確認できます。
しばらく待つと、Autonomous Databaseが使用可能になります。
Autonomous Databaseの名前をクリックして、Autonomous Databaseの詳細画面に移動します。
4.Autonomous Databaseへの接続
Autonomous Databaseの詳細画面から接続文字列を取得します。
SQL*PlusからAutonomous Databaseにadminユーザとして接続します。
パスワードとして、シークレットのコンテンツとして入力した"Demo#1Demo#1"を入力します。
[opc@ocicli ~]$ sqlplus admin/Demo#1Demo#1@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.ap-tokyo-1.oraclecloud.com))(connect_data=(service_name=**************_secrettest_medium.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes)))
SQL*Plus: Release 21.0.0.0.0 - Production on Thu Mar 2 03:55:24 2023
Version 21.9.0.0.0
Copyright (c) 1982, 2022, Oracle. All rights reserved.
Last Successful login time: Thu Mar 02 2023 03:48:31 +00:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.18.0.1.0
SQL>
OCI Vaultのシークレットを使用して設定したパスワードを使用して、Autonomous Databaseにadminユーザとして接続できることが確認できました。
なお、adminユーザのパスワードを変更する際にもOCI Vaultのシークレットを利用することが可能です。
参考資料
・Use Oracle Cloud Infrastructure Vault Secret for ADMIN Password