シークレットを保護するための新機能、Secret Manager の破棄の遅延のご紹介
Aswin Viswanathan
Product Manager, Secret Manager
Yuriy Babenko
Customer Engineer, FSI
※この投稿は米国時間 2024 年 8 月 22 日に、Google Cloud blog に投稿されたものの抄訳です。
Secret Manager は、GKE や Compute Engine をはじめ、さまざまな Google Cloud サービスで使用されているシークレットを保存、操作、監査し、シークレットにアクセスするためのスケーラブルなフルマネージド サービスです。あらゆるシークレット管理戦略において重要となる領域が、シークレットの削除と破棄の管理です。この領域で高度な機能をご利用いただけるようにするため、このたび、Secret Manager のシークレット バージョンの破棄の遅延の一般提供を開始いたします。この新機能により、シークレット マテリアルが、偶発的に、あるいは意図された悪意ある攻撃の一環として、誤って削除されることがなくなります。
仕組み
Secret Manager 内には、シークレットとシークレット バージョンという 2 つのメインリソースがあります。シークレットは、一連のメタデータとシークレット バージョンを含む project-global オブジェクトです。シークレット バージョンは、認証情報、API キー、証明書などの実際のシークレット データが保存される場所です。
Secret Manager でのシークレット マテリアルのライフサイクル管理においては、これまでいくつかの課題がありました。
-
シークレット バージョンを破棄するステップは不可逆的である。つまり、破棄されたシークレット マテリアルを復元する方法はありません。
-
重要なシークレットを破棄しようとする試みがあった場合に、対処につながるアラートが発行されない。そのため、管理者がタイムリーに介入できる機会が減ってしまいます。
これらの課題に対処するために、シークレットの破棄の遅延の一部として 2 つの機能を導入いたしました。シークレット バージョンが即時に破棄されることを防止するカスタマイズ可能な遅延期間、および破棄アクションが試行されたときに警告する新しい Pub/Sub イベント通知です。
破棄の遅延は、Google Cloud コンソールまたは API を使用して簡単に管理できます。
破棄の遅延の導入前は、シークレット バージョンを「有効」、「無効」、「破棄」のフェーズ間で移動できていました。「無効」は可逆的で、シークレット バージョンにアクセスできないようにする状態です。デフォルトで、「破棄」は即時の不可逆的な状態です。
破棄の遅延により、シークレット バージョンの即時の破棄を無効にするという新たなフローが導入されます。これがフォールバック オプションとなり、予期しないインシデントに対する備えとして機能し、データが脅威から保護されているという安心感も増します。
破棄の遅延により、シークレット バージョンは N 日間「無効」の状態を維持した後に破棄されます。
この機能の導入に伴い、破棄の操作を行うと、そのバージョンの状態を「無効」に移行することで、その特定のバージョンがソフトデリート(復元可能)されるようになります。そのシークレットは、N 日間のアーカイブ期間に入ります。この期間は、管理者が TTL_DURATION フィールドを使用して構成できます。このアーカイブ期間中、管理者はシークレット バージョンを再度有効にして「有効」の状態に移行させることで、そのバージョンを復元できます。遅延期間が終了すると、シークレット バージョンは完全に「破棄」されます。
オブザーバビリティと Pub/Sub 通知によるアラート
オブザーバビリティは、優良なセキュリティ ポスチャーの定義における主要素です。シークレット バージョンを破棄する試みがあった場合に、組織の管理者と SecOps スペシャリストに通知が行くように、SECRET_VERSION_DESTROY_SCHEDULED という名前の新しい任意の Pub/Sub 通知を導入いたしました。これを有効にすると、スケジュールされている破棄があれば、該当する Pub/Sub トピックに通知されるので、当番の担当者は変更内容を分析し、必要に応じて破棄の続行を阻止してシークレット バージョンを復元できます。
最小限のアクセス権付与で破棄の遅延機能を補完
破棄の遅延機能を有効にするだけで、シークレット マテリアルの破棄を完全に防御できるわけではありません。適切なアクセス制御をシークレットに設定することが重要です。この機能を有効にしていても、シークレットの管理者は自分の意思でシークレット全体を削除できます。このため、シークレットに対する管理者権限は、厳格に制限された信頼性の高いユーザー グループにのみ付与することが不可欠です。シークレットに対する通常のライフサイクル管理操作の場合、ユーザーには、制限付きロールのみを割り当てる必要があります。つまり、タスクの完了に必要な最小権限を付与します。
-
Secret Manager 管理者: シークレット、バージョン、シークレットのライフサイクルを完全に制御できる管理者に付与。通常、このロールはセキュリティ管理者グループに限定され、広く割り振られることはありません。
-
シークレット バージョン マネージャー / シークレット バージョン追加者: シークレット バージョンのライフサイクル管理(追加、有効化、無効化、破棄)またはローテーション ワークフローを実行する DevOps エンジニアまたはサービス アカウントに付与。これらのロールでは、シークレットのプロパティに変更を加えることはできません。
お客様の要件への対処
破棄の遅延の開発にご協力くださったお客様からのフィードバックは、サイバー攻撃に対するレジリエンスの強化とバックアップの効率化につながっています。
「Secret Manager の「シークレット バージョンの破棄の遅延」機能を使用すると、ランサムウェアなどの破壊的攻撃や重要なシークレットの誤った削除を簡単かつ効果的に防御できます。金融サービス会社として、IT プラットフォームのセキュリティとレジリエンスは事業の中心にあります」と、ドイツ取引所グループの企業である Crypto Finance AG の最高情報セキュリティ責任者 Dominik Raub 氏は述べています。
「当社では、認証情報と鍵マテリアルを Secret Manager に保存して、アプリケーションで安全に使用できるようにしています。こうしたシークレットは、アプリケーションとインフラストラクチャの運用に不可欠なため、悪意ある削除や誤った削除から保護する必要があります。これまで、この保護は業務に使用しているすべてのクラウド プラットフォームにおいて困難な課題でした。この課題について Google のパートナーに支援を依頼したのですが、彼らの協力的な姿勢とソリューション実現までのスピードにとても満足しています。今は、複雑なバックアップ手順を実装することなく、ほんの数回クリックするだけでシークレットを削除から保護できています。そして、Secret Manager が提供する保護機能に支障をきたすことなく、すべてを実現できています。」
今すぐ Secret Manager を使ってみる
Secret Manager の「シークレット バージョンの破棄の遅延」は、Google Cloud コンソール、API、gcloud、クライアント ライブラリ サポートで一般提供となりました。破棄の遅延機能について詳しくは、Secret Manager のドキュメントをご覧ください。
-Secret Manager 担当プロダクト マネージャー Aswin Viswanathan
-FSI 担当カスタマー エンジニア Yuriy Babenko