Secret Manager を使用する

Prev Next

VPC環境で利用できます。

Secret Managerでシークレットを作成して管理するためには、別途のコンソールアクセス権限の設定が必要です。使用権限に関する内容は Secret Manager の権限管理Sub Account ご利用ガイドをご参照ください。

Secret Manager画面

Secret Managerを利用するための基本的な説明は、次の通りです。

SECM_screen_ko

領域 説明
① メニュー名 サービス名と全シークレット数
② 基本機能 シークレット作成、サービス詳細のご案内、画面更新
③ シークレットリスト シークレットタイプとシークレットリストの確認
④ 詳細機能 基本情報とシークレット値、ログの確認
⑤ シークレット詳細情報と機能 シークレット情報とステータス変更/削除リクエスト、保護キー変更
⑥ ローテーション情報 シークレットローテーションの実行と設定情報の確認

シークレット作成

シークレットの作成方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. (1) シークレット基本情報入力のステップで、シークレットの名前と保護キーを選択します。
  3. (2) ローテーション設定のステップで、自動ローテーションの実行有無とローテーション周期、そしてトリガーを選択します。ローテーション周期とトリガーは、自動ローテーションを有効にする場合のみ必須で入力します。もし、トリガーがない場合は、Cloud Functionsトリガーを作成します。トリガー作成に関する詳細は Cloud Functions - Secret Managerタイプトリガー項目を参照ください。
  4. Secret値入力のステップでシークレットを構成します。シークレットは Key-Valueプロパティを持ち、JSON形式で構成されます(Secret値の最大サイズは10,000Byteです)。必ず1つ以上の交換対象を設定します。ローテーション対象に関する詳細は、シークレットローテーション項目をご参照ください。
  5. 最終確認後、作成を完了します。
参考

サービスで提供する機能の特性によりデータベースのアクセス情報を保存し、アプリケーションのロード時に照会する使用例が最も一般的です。あらかじめ構成したデータベースの認証情報をシークレット値で作成します。シークレットが適用されるターゲットが Naver Cloud Platform Cloud DBであれば、下記のシークレット構成例をご参照ください。このシークレットローテーションの活用例は Secretローテーションアクションをご参照ください。

DBMS 必要なプロパティ
MySQL Host, Port, Username, Password
MSSQL Host, Port, Username, Password
PostgreSQL Host, Port, Username, Database, Password
# Jsonフォーマット例
{
    "cdbUser" : "test",
    "cdbPassword" : "test123",
    "cdbHost" : "db-c89**-**.cdb.ntruss.com",
    "cdbPort" : "3306",
    "cdbDatabase" : "test_db"
}

シークレット情報確認

シークレットリストとシークレットタイプを確認します。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. シークレットリストが表示されたら、シークレットタイプと名前を確認するか、シークレットをクリックして詳細情報を確認します。
    SECM_info2_ko
    • シークレット名: シークレットの名前であり、重複しません
    • ステータス: シークレットのステータス。詳細は、シークレットステータス管理を参照
    • Secret ID: シークレットの固有 ID。API呼び出しにシークレット指定子として使用されます
    • 保護キー(キー Tag) : シークレットを保護する暗号化キーで、Key Management Serviceを通じて暗号化・復号化の用途で管理されます
      • デフォルトキー(Secret Manager Default Key): Secret Managerがユーザー別に直接管理するキー。これも Key Management Serviceを利用して管理しますが、ユーザーが直接確認したり、管理することはできません
      • ユーザー管理キー(User Managed Key): ユーザーが Key Management Serviceで直接作成して管理するキー。Key Management Service とはのユーザー管理キー項目を参照
    • 作成日: シークレット作成日
    • 説明: シークレットに関する追加情報と説明

シークレット値

シークレットは、実際の認証情報に利用されるセキュリティパスワードを含みます。これをシークレット値として区分しており、意図しないセキュリティパスワードの漏洩を最小化するため、シークレット値は基本的に表示されません。シークレット値を確認して変更する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. シークレットリストが表示されたら、目当てのシークレットをクリックして詳細情報を確認します。
  3. Secret値タブをクリックします。
  4. シークレット値はデフォルトでは表示されません。シークレット値を確認するには、Secret値を見るをクリックします。
  5. シークレット値を変更した場合は、保存をクリックして変更内容を反映します。
注意

Secret Managerでのシークレット値の変更は、実際に適用されているセキュリティパスワードの変更は保証しません。例えば、MySQLデータベースリソースで使用される DB Id/パスワードを Secret Managerでシークレットとして管理している場合、Secret Managerのシークレット値変更は、実際のデータベースのパスワードまでは変更しません。

シークレットチェーン

Secret Managerは、シークレットを使用しながらローテーションされるシークレット値をローテーション履歴に応じてステージ(Stage) という内部ステータスで管理します。ローテーションされるシークレット値は、ローテーションステージが進むにつれて時間順に維持され、これをシークレットチェーンと定義します。

SECM_04_ko

現在正常に使用中のシークレット値である ACTIVEステージを基準に、直前に使用したシークレット値は PREVIOUSステージとして、その前に使用したシークレット値は SUSPENDEDステージとして維持されます。また、ローテーションが新たに開始され、新たに作成されたシークレット値はローテーションが完了するまで PENDINGステージとして追加されます。このプロセスをチェーンシフティング(Chain Shifting) と定義します。

SECM_05_ko

上記のシークレットチェーン遷移図で確認できるように、シークレットローテーションが正常に完了すると、PENDINGステージは空の値で維持されます。一般的な場合は ACTIVEステージのみ活用されますが、ローテーションアクションの実行状況によって PENDINGまたは PREVIOUSステージを適用する必要がある場合もあります。もし、シークレットローテーションが進行中のステータスでシークレット照会を呼び出して PENDINGを含むシークレットチェーンがレスポンスした場合、ACTIVE -> PENDINGの順で再試行することでトラブルシューティングを行えます。

使用ログ確認

すべてのシークレットアクセスアクションは、Cloud Log Analyticsにログとして保存されます。シークレットの使用履歴を確認する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. シークレットリストが表示されたら、目当てのシークレットをクリックして詳細情報を確認します。
  3. ログ確認タブをクリックします。
  4. ログを検索するには、検索期間またはキーワードを入力して検索します。

シークレットステータス管理

シークレットステータス

Secret Managerでは、シークレットの作成から削除までの一連のステータスを管理します。いわゆるシークレットライフサイクルとして定義されたシークレットステータスの流れは、次の通りです。

SECM_03_ko

シークレットはライフサイクルに応じて初期作成、利用可能、一時停止、ローテーション進行中、削除予定、最終削除のステータスに区分されます。シークレットの各ステータスについての説明は、次の通りです。

  • 作成
    シークレットが作成されると固有 IDが付与され、シークレット値が指定された保護キーで暗号化されて暗号化ストレージに保存されます。作成段階が終了すると、自動的に利用可能状態に切り替わります。

  • 利用可能
    シークレットが正常に維持されている状態であり、照会やローテーションが可能です。一時停止や削除リクエストが可能です。

  • 一時停止
    一時的に利用が停止された状態です。保護キーの変更とシークレット値の照会/変更が停止されます。また、シークレット値の照会と変更が必要な自動ローテーションも実行できません。

  • 削除リクエスト
    シークレット削除のために削除リクエストされた状態で、7日間の猶予期間を経てから最終削除されます。もし、猶予期間なしに直ちに削除したい場合は、直ちに削除ボタンをクリックして直ちに最終削除できます。削除リクエストステータスのシークレットは、一時停止状態と同様に、保護キーの変更やシークレット値の照会/変更、自動ローテーションができません。最終削除前まで削除リクエストはキャンセルできます。削除リクエストがキャンセルされたシークレットは、一時停止状態に切り替わります。

  • 最終削除
    完全に削除されたシークレットのことで、Secret Managerでは論理的な状態としてのみ定義された状態です。削除時点でシークレット値を含むすべての関連情報が削除され、復旧できません。

参考

シークレットを削除する場合、シークレットローテーションのためにユーザーが直接作成した Cloud Functionsアクションは削除されません。

シークレットステータス変更

シークレットのステータスを変更する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. シークレットリストが表示されたら、目当てのシークレットをクリックして詳細情報を確認します。
  3. 利用可能シークレットステータスを変更するには、利用停止をクリックします。
  4. 一時停止シークレットステータスを変更するには、利用再開をクリックします。

保護キー変更

シークレット値は設定された保護キーで暗号化されて保護されます。すべての保護キーは Key Management Serviceで管理されます。シークレット保護キーを変更する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. シークレットリストが表示されたら、目当てのシークレットをクリックして詳細情報を確認します。
  3. 保護キー項目の Editボタンをクリックします。
  4. 設定できるキーリストが表示されたら、変更したいキーを選択し、変更をクリックします。
  5. ユーザー管理キーを選択する場合は、キー暗号化・復号化の利用権限を Secret Managerに委任します。
  6. もし、キーの作成が必要な場合は、Key Management Serviceキー作成ボタンをクリックして Key Management Serviceコンソールを利用してキーを作成します。
注意
  • Key Management Service(KMS)のリージョン隔離キーの機能が新たにアップデートされたため、Secret Managerでもリージョン隔離キーを連携できます。
  • アップデート以前に全域キーと連携されたシークレットをそのまま使用できますが、新規シークレットと連携する場合は全域キーをこれ以上選択できません。
  • 詳細は、Key Management Service の概要をご参照ください。

シークレットローテーション

シークレットを安全に使用するためには、定期的な更新が必要です。Secret Managerはユーザーのシークレットを任意に変更することができないため、シークレットのローテーションはユーザーが定義したアクションで処理されます。シークレットローテーションが実行されると、基本的にローテーション対象として指定されたシークレットプロパティ値を更新します。もちろん、他の値も任意に変更できますが、円滑な動作のためにお勧めしません。ローテーション対象は、一般的に更新が必要な機密値(ex.パスワード)のみを最小限に指定することをお勧めします。また、ローテーションアクションを実行するためには、Cloud Functionsトリガーが登録されている必要があります。シークレットローテーショントリガーの作成に関する詳細は Cloud Functions - Secret Managerタイプトリガー項目をご参照ください。

シークレットローテーションプロセスとアクション定義に関する詳細は Secretローテーションページをご参照ください。

シークレットローテーション設定

シークレットローテーションを設定する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. シークレットリストが表示されたら、目当てのシークレットをクリックして詳細情報を確認します。
  3. ローテーション情報セクションで自動ローテーション項目のボタンを有効にすることで、ローテーションアクションを定期的に実行させることができます(自動ローテーションを有効にするには、トリガーが登録されている必要があります)。
  4. 自動ローテーションが有効になると、自動ローテーション周期がデフォルトの90日に設定されます。自動ローテーション周期項目の Editボタンをクリックして、ローテーション周期を変更できます。
  5. トリガー項目の Editボタンをクリックして、マッピングされたトリガーを変更できます。ただし、ローテーションが進行中の場合は、トリガーマッピングを変更できません。
  6. 進行段階項目には、直前のローテーション実行情報が表示されます。

シークレットローテーション実行

自動置換が有効になっているシークレットのローテーションは自動的に実行されますが、手動で直ちに実行させることもできます。

注意

手動ローテーションの実行は、自動ローテーション周期の次のスケジュールに影響を与えません。

シークレットローテーションを実行する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. シークレットリストが表示されたら、目当てのシークレットをクリックして詳細情報を確認します。
  3. ローテーション情報セクションでローテーション実行ボタンをクリックすると、トリガーが実行されます。

シークレットローテーションの再試行、キャンセル、ロールバック

ローテーション実行完了の有無は、シークレットローテーションプロセスの戦略によって判断されます。シークレットローテーションプロセスの最終ステップである Complete Rotationを受信できない場合、ローテーションアクションは失敗とみなされます。

SECM_06_ko

シークレットローテーションのステータスとステータスに応じた機能は、次の通りです。

  • 正常: 正常ステータスでは、次のローテーションを実行できます。ローテーションが完了すると、既存のシークレットは新しい値に更新され、既存の ACTIVEステージは PREVIOUSになります。ロールバックにより、直前に使用されていたシークレットである PREVIOUSを再び ACTIVEに戻せます。
  • ローテーション進行中: ローテーションイベントが発生してトリガーが実行された後、まだ完了の有無を通知されていないステータスです。
  • ローテーション失敗: ローテーションタスクが正常に完了しない場合、ローテーション失敗状態になり、この場合、再試行またはタスクキャンセルを行えます。
注意

ロールバックは Secret Managerのシークレットチェーンのみを変更し、Secret Managerで管理するシークレット値と、それを使用するサービスに実際に適用されたシークレットは異なる場合があります。同様に、タスクのキャンセルは、Secret Managerのシークレットローテーションタスクの追跡を直ちに中断することで、実際のアクションの実行有無やシークレットローテーションの結果をこれ以上確認しません。したがって、シークレット値と実際に適用されたシークレットは異なる場合があります。円滑な動作のため、ロールバックとタスクのキャンセルは必ず必要な状況でのみ実行します。

シークレット削除

シークレットを完全削除する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > Security > Secret Manager > Secretメニューを順にクリックします。
  2. シークレットリストが表示されたら、目当てのシークレットをクリックして詳細情報を確認します。
  3. シークレットの削除をリクエストするには、削除リクエストボタンをクリックします。
  4. シークレット名を入力して、シークレット削除を確認します。
  5. 削除リクエストされたシークレットは、7日後に最終削除されます。もし直ちに削除をご希望の場合は、今すぐ削除ボタンをクリックすると、猶予期間なしに直ちに削除できます。
注意

削除されたシークレットは復旧できませんので、慎重に削除します。