2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Autonomous Database:Azure Key Vaultに保存されているシークレットを使用して作成したクレデンシャルでBlob Storageにアクセスしてみた

Last updated at Posted at 2023-11-02

はじめに

Autonomous Databaseではマルチクラウド環境向けの様々な機能が実装されています。
先日の機能強化で、Azure Key Vault、AWS Secrets Manager、GCP Secret Managerといった各クラウドベンダーのシークレット管理サービスに格納されたシークレットを使用してクレデンシャルが作成できるようになりました。

そこで今回は、Azure Key Vaultに格納されているシークレットを使用してクレデンシャルを作成し、そのクレデンシャルを用いてAutonomous DatabaseからAzure Blob Storageにアクセスしてみました。

AWS Secrets Managerに格納されているシークレットを使用してクレデンシャルを作成する手順の記事はこちら。

Google Cloud Secret Managerに格納されているシークレットを使用してクレデンシャルを作成する手順の記事はこちら。

1. Azure Key Vaultとシークレットの作成

Azureポータルにアクセスし、Key vaults(日本語環境では「キーコンテナー」)に移動します。

「Create」をクリックし、Key Vaultを作成します。
スクリーンショット 2023-11-02 19.47.40.png

ここでは「MyAzureKeyVault777」という名前のKey Vaultを作成しました。
スクリーンショット 2023-11-02 19.52.52.png

作成したKey Vault内にシークレットを作成します。
ここでは「StorageAccountAccessKey」という名前のシークレットを作成し、シークレットの値としてストレージアカウントのアクセスキーを設定しました。
スクリーンショット 2023-11-02 19.56.37.png

Key Vault「MyAzureKeyVault777」内にシークレット「StorageAccountAccessKey」が作成できました。
スクリーンショット 2023-11-02 19.59.18.png

2. Azureサービス・プリンシパルによる認証の有効化

DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTHプロシージャを使用して、Azureサービス・プリンシパルによる認証を有効化します。
providerにAZUREを指定します。
paramsのazure_tenantidにはAzureのテナントIDを指定します。
AzureのテナントIDはMicrosoft Entra IDのOverviewの画面で確認できます。
スクリーンショット 2023-11-02 20.05.05.png

SQL> BEGIN
  2      DBMS_CLOUD_ADMIN.ENABLE_PRINCIPAL_AUTH(
  3          provider => 'AZURE',
  4          username => 'admin',
  5          params   => JSON_OBJECT('azure_tenantid' value 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'));
  6  END;
  7* /

PL/SQLプロシージャが正常に完了しました。

SQL>

以下のSQLで、Azureサービス・プリンシパルの設定に必要な情報を確認し、それぞれの値をメモしておきます。

SQL> SELECT param_name, param_value FROM CLOUD_INTEGRATIONS
  2* WHERE param_name LIKE 'azure%';

PARAM_NAME           PARAM_VALUE                                                                                                                                                                       
____________________ _________________________________________________________________________________________________________________________________________________________________________________ 
azure_app_name       ADBS_APP_OCID1.AUTONOMOUSDATABASE.OC1.AP-TOKYO-1.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                                                                     
azure_consent_url    https://login.microsoftonline.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/v2.0/authorize?client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&response_type=code&scope=User.read    
azure_tenantid       xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx                                                                                                                                              

SQL>

ブラウザからazure_consent_urlのURLにアクセスし、「承諾」をクリックします。
スクリーンショット 2023-11-01 20.35.58.png

Azureポータルで、Key vaultsに移動します。
作成したKey Vaultのアクセスポリシーの画面に移動し、「Create」をクリックします。
スクリーンショット 2023-11-02 20.15.01.png

シークレットパーミッションのGetにチェックを入れ、「Next」をクリックします。
スクリーンショット 2023-11-02 20.15.50.png

プリンシパルにAutonomous Databaseのプリンシパルを設定します。
スクリーンショット 2023-11-02 20.16.14.png

ADBSと入力して検索し、2.で確認したazure_app_nameの値と同じ名前のプリンシパルを設定します。
スクリーンショット 2023-11-02 20.17.27.png

そのまま「Next」をクリックします。
スクリーンショット 2023-11-02 20.18.44.png

設定内容を確認し、問題がなければ「Create」をクリックしてアクセス・ポリシーを作成します。
スクリーンショット 2023-11-02 20.18.57.png

Autonomous DatabaseにKey Vault「MyAzureKeyVault777」からシークレットを取得することを可能にするポリシーが作成されました。
スクリーンショット 2023-11-02 20.19.12.png

3. Azure Key Vaultに保存されているシークレットを使用したクレデンシャルの作成

Azure Key Vaultに保存されているシークレットを使用したクレデンシャルを作成します。
ここではAzure Blob Storageにアクセスするためのクレデンシャル「AZURE_SECRET_CRED」を作成します。
usernameにストレージ・アカウント名、secret_idにストレージ・アカウントのアクセスキーを保存しているAzure Key Vault内のシークレットの名前、azure_vault_nameにシークレットを保存しているKey Vaultの名前を指定します。

SQL> BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
  2      credential_name  => 'AZURE_SECRET_CRED',
  3      params  => JSON_OBJECT( 
  4        'username'          value 'myblobstorageaccount777', -- ストレージ・アカウント名
  5        'secret_id'         value 'StorageAccountAccessKey', -- シークレットの名前
  6        'azure_vault_name'  value 'MyAzureKeyVault777' )); -- Azure Key Vaultの名前
  7  END;
  8* /

PL/SQLプロシージャが正常に完了しました。

SQL>

3. Azure Key Vaultに保存されているシークレットを使用したクレデンシャルの使用

Azure Key Vaultに保存されているシークレットを使用して作成したクレデンシャルで、Azure Blob Storageにアクセスしてみます。

SQL> SELECT object_name FROM 
  2  DBMS_CLOUD.LIST_OBJECTS(
  3       'AZURE_SECRET_CRED', 
  4       'https://myblobstorageaccount777.blob.core.windows.net/mycontainer/'
  5* );

OBJECT_NAME    
______________ 
zaiko.csv      

SQL>

Azure Key Vaultに保存されているシークレットを使用して作成したクレデンシャルでAzure Blob Storageにアクセスできました。

参考情報

Use Vault Secret Credential with Azure Key Vault
ENABLE_PRINCIPAL_AUTH Procedure
CREATE_CREDENTIAL Procedure

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?