コンテンツに移動
セキュリティ & アイデンティティ

Google Cloud で自動パスワード ローテーションを開始する方法

2024年10月2日
Shobhit Gupta

Solutions Architect

Google Cloud Summit Series

Discover the latest in AI, Security, Workspace, App Dev, & more.

Register

※この投稿は米国時間 2024 年 9 月 24 日に、Google Cloud blog に投稿されたものの抄訳です。

はじめに

パスワード ローテーションは広く認められているベスト プラクティスですが、その実施は面倒で、混乱を招く可能性があります。しかし、自動化することでその負担を軽減できます。このガイドでは、Google Cloud でパスワード ローテーションを自動化するためのベスト プラクティスをいくつかご紹介します。

例として、Google Cloud Cloud SQL インスタンスのパスワードをローテーションするプロセスを自動化するリファレンス アーキテクチャを示します。この方法は、他のツールやシークレット タイプにも応用できます。

Google Cloud にパスワードを保存する

Google Cloud では、パスワードなどのシークレットの保存にさまざまなソリューションを使用できますが、シークレットを安全に保存するには、Google のフルマネージド プロダクトである Secret Manager を使用することをおすすめします。選択したツールにかかわらず、保存されたパスワードは追加の手段で保護する必要があります。Secret Manager を使用すると、次の方法を使用してシークレットを保護できます。

  1. アクセスの制限: シークレットの読み取り / 書き込みは、サービス アカウントを通じて IAM ロールを介してのみ可能とする必要があります。サービス アカウントにロールを付与する際は、最小権限の原則に従う必要があります。

  2. 暗号化: Secret Manager は、デフォルトで AES-256 を使用して保存中のシークレットを暗号化します。また、顧客管理の暗号鍵(CMEK)を使用して、保存中のシークレットを暗号化することもできます。詳細については、Secret Manager の顧客管理の暗号鍵を有効にするをご覧ください。

  3. パスワード ローテーション: セキュリティ インシデントのリスクを軽減するために、Secret Manager に保存されたパスワードは、定期的にローテーションする必要があります。

パスワード ローテーションの理由と方法

パスワードを定期的に変更することで、パスワードが漏洩した場合のリスクを軽減できます。Forrester Research の推定によれば、データ侵害の 80% が権限のある認証情報の漏洩(パスワード、トークン、鍵、証明書など)に関連しています。

パスワードを手動でローテーションすることはおすすめしません。人間がパスワードを処理すると、パスワードの不正使用などの別のリスクが生じる可能性があるためです。また、手動のローテーション プロセスでは、人為的ミスでローテーションが実際には実行されないというリスクも生じます。

より安全な方法は、ワークフローの一環としてパスワード ローテーションを自動化することです。この方法は、アプリケーション、データベース、サードパーティ サービス、SaaS ベンダーなどのパスワードに適用できます。

自動パスワード ローテーション

通常、パスワードのローテーションには、以下の手順が必要となります。

  • 基盤となるソフトウェアまたはシステム(アプリケーション、データベース、SaaS など)でパスワードを変更します。

  • Secret Manager を更新して、新しいパスワードを保存します。

  • そのパスワードを使用するアプリケーションを再起動します。これにより、そのアプリケーションが最新のパスワードを使用するようになります。

自動パスワード ローテーションの一般的なアーキテクチャ

次のアーキテクチャは、基盤となるソフトウェアやシステムのパスワードをローテーションする Google Cloud のシステムの一般的な設計例で、先ほど概説したベスト プラクティスに基づいています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_uhBhYoV.max-1100x1100.png

自動パスワード ローテーションは、Cloud Functions と Pub/Sub によってオーケストレートされます。関数の呼び出しは、どのシステムからでも実行できます。

このワークフローを以下に示します

  • パイプラインまたは Cloud Scheduler pub/sub トピックにメッセージを送信します。このメッセージには、ローテーションするパスワードに関する情報が含まれます。たとえば、Secret Manager のシークレット ID、データベース インスタンスとユーザー名(データベース パスワードの場合)などです。

  • pub/sub トピックに到着したメッセージによって、メッセージを読み取り、メッセージに含まれる情報を収集する Cloud Run functions の関数がトリガーされます。

  • この関数は、対応するシステムのパスワードを変更します。たとえば、メッセージにデータベース インスタンス、データベース名、ユーザーが含まれる場合、この関数は指定されたデータベース内でそのユーザーのパスワードを変更します。

  • 関数は、新しいパスワードを反映するために Secret Manager のパスワードを更新します。関数が更新するシークレット ID は、pub/sub メッセージで指定されています。

  • 関数は、別の pub/sub トピックに、パスワードがローテーションされたことを示すメッセージをパブリッシュします。アプリケーションやシステムは、このトピックをサブスクライブすることで、パスワードがローテーションされたことを認識し、自動再起動などのタスクを実行できます。

このアーキテクチャに基づいて Google Cloud Cloud SQL パスワードのローテーションを自動化する方法については、こちらのガイドでデプロイ例をご覧ください。

次のステップ

Secret Manager の詳細については、こちらのドキュメントをご覧ください。Google Cloud のアプリケーションとリソースを保護するためのその他のベスト プラクティスについては、セキュリティ ベスト プラクティス センターをご覧ください。

-ソリューション アーキテクト Shobhit Gupta

投稿先