ウォレット関数を使用するデータベース・シークレット・ローテーション
OCI FunctionsでWalletの事前組込み関数を使用したデータベース・シークレット・ローテーションを使用して、データベースへのmTLS接続を使用してシークレットをローテーションする方法をご覧ください。
一般的な使用方法のシナリオ
Wallet PBFを使用したデータベース・シークレット・ローテーションを使用して、ウォレット(mTLS)とのJDBC接続を作成することで、データベースのシークレットを自動的にローテーションします。
Database Secret Rotation with Wallet関数に関連するサービスは次のとおりです。
有効範囲
この関数のスコープに関する考慮事項は次のとおりです。
- 事前組込み関数は、JDBC URLをサポートする任意のデータベースで使用できます。
- シークレット・サービスは、事前組込みファンクションによって作成されたファンクションを使用して、データベース・シークレットをローテーションします。
- Wallet PBFを使用したデータベース・シークレット・ローテーションは、Autonomous Databaseで使用されます。Autonomous Databaseの詳細は、Autonomous Databaseを参照してください。
前提条件と推奨事項
この事前作成機能を使用する場合のベスト・プラクティスを次に示します。
- 事前構築済み関数のタイムアウトを300秒に設定します。
- アプリケーションにリンクされたVCNは、サービス・ゲートウェイ、インターネット・ゲートウェイまたはNATゲートウェイを使用して他のOCIサービスへのアクセスを容易にします。
Wallet関数を使用したデータベース・シークレット・ローテーションの構成
ウォレット関数を使用してデータベース・シークレット・ローテーションを構成するには、次のステップを実行します:
デプロイ・ダイアログに、ファンクションをデプロイするタスクが表示されます(「事前構築済ファンクション・デプロイメントの終了」を参照)。
構成オプション
この関数の起動
- このPBFを使用してファンクションを作成し、ファンクションIDをコピーします。
-
- ナビゲーション・メニューを開き、「アイデンティティとセキュリティ」、「Vault」の順に選択します。
- 「リスト範囲」で、ボールトに作成したシークレットを含むコンパートメントを選択します。
- 交代勤務の場合、[ターゲット システム タイプ]で [関数]を選択します。
- ステップ1からコピーしたファンクションIDを「ターゲット・システムID」として追加します。
- シークレットが次の要件に従っていることを確認します。
- シークレットでは自動生成が有効になっている必要があります。
- シークレット・コンテンツは、次の形式のJSON文字列である必要があります:
{ ‘username’: <required: username>, ‘password’: <required: password>, ‘adbId’: <required: adbId>, ‘tnsName’: <required: tnsName (adbName + ‘_high/_low/_medium’)> }
- ユーザー名とパスワードは、
jdbc:oracle:thin:@<tnsName>?TNS_ADMIN=<walletDirectory>
という形式を使用してデータベースとの接続を確立する必要があります。 - シークレットは、シークレット・コンテンツの一部として
tnsName
(adbName + '_high/_low/_medium')およびadbId
を持つ必要があります。 - mTLS接続を使用してください。Wallet (mTLS)を使用したJDBC Thin接続を参照してください
トラブルシューティング
事前構築済ファンクションの実行では、事前構築済ファンクションのコードで問題が発生した場合に502エラー・コードが返されます。原因を特定するには、事前構築済み関数のロギング機能を有効にします(Invoking a function failed message and a 502 errorを参照)。
ログ分析のヒント
-
アプリケーションには複数の関数があるため、事前に作成された関数ログエントリは接頭辞「PBF | <PBF NAME>」で識別されます。
たとえば、Database Secret Rotation with Walletの事前構築済関数のログ・エントリは次のようになります。
"PBF | Database Secret Rotation with Wallet | INFO | 2024-01-31T18:06:50.809Z | Fetching details from Events JSON"
- すべての組み込み関数は、ロギングレベルを構成パラメータとして指定するオプションを提供します。ロギング・レベルを
DEBUG
に設定して、詳細情報を取得できます。
次の表に、事前作成関数を使用するときに発生する可能性のある一般的なエラーの概要を示します。
エラー・コード | Error Message | アクション |
---|---|---|
404 | NotAuthorizedOrNotFound | 必要なポリシーが構成されていることを確認します。 |
次の表に、この事前作成機能の使用時に発生する可能性があるレスポンス・ステータス・コードの概要を示します。
ステップ | ステータス・コード | レスポンス・メッセージ | 説明 |
---|---|---|---|
VERIFY_CONNECTION | 200 | 保留中のシークレット・バージョンを使用した接続に成功しました! | シークレットの保留中バージョンが存在し、そのバージョンを使用してデータベース接続が正常に確立されました。 |
現在のシークレット・バージョンを使用した接続に成功しました! | 現在のシークレット・バージョンでデータベース接続に成功しました。 | ||
400 | 現在のシークレット・バージョンを使用した接続は失敗しました。 | 現在のシークレット・バージョンまたは保留中のバージョン(存在する場合)の資格証明が無効です。 | |
404 | シークレットの現在のバージョンが見つかりません | 指定されたsecretIdのシークレットの現在のバージョンが存在しません。 | |
500 | <例外メッセージ> | 接続の検証中に例外が発生したときにスローされます。 | |
CREATE_PENDING_VERSION | 200 | 保留中のバージョンがすでに存在します。 | シークレットの保留中バージョンはすでに存在します。新規待ち状態バージョンを作成しません。 |
保留中のバージョンが正常に作成されました。 | 待ち状態のバージョンが存在しません。シークレットの新規待ち状態バージョンが作成されます。 | ||
<例外コード> | 保留中のバージョンの作成に失敗しました。 | シークレットの新しい保留中バージョンを作成しようとしているときにDPクライアントから例外が発生しました。 | |
500 | <例外メッセージ> | 新規バージョンの作成中に例外が発生したときにスローされます。 | |
UPDATE_TARGET_SYSTEM | 200 | ターゲット・システムはすでに更新されています。 | データベースは、このバージョンがデータベース資格証明の更新に以前使用されていたことを示す、保留中のシークレット・バージョンを使用して接続できます。 |
ターゲット・システムは正常に更新されました。 | データベース資格証明は、シークレットの保留中のバージョンで更新されました。 | ||
404 | 保留中のバージョンが存在しません。 | ターゲット・システムの更新に使用できるシークレットの保留中のバージョンが存在しません。 | |
500 | ターゲット・システムの更新に失敗しました。 | ターゲット・システムを新しい保留中のバージョン資格証明で更新しようとしましたが、これらの資格証明を使用したデータベース接続の検証に失敗しました。 | |
<例外メッセージ> | ターゲット・システムの更新中に例外が発生したときにスローされます。 | ||
PROMOTE_PENDING_VERSION | 200 | 保留中のバージョンがプロモートされました! | 保留中のバージョンが現在のバージョンにプロモートされました。 |
500 | <例外メッセージ> | 保留バージョンの昇格中に例外が発生したときにスローされます。 |