DZone.com Feed 日本語
フォロー
GoにおけるAzure Key Vault Secretsのセルフリコンサイル、mamoriと共に
Azure Key Vault は、Azure のシークレットの世界における模範的な存在です。すべてのシークレットにはバージョンが付けられており、ソフトデリートとパージ保護が利用できます。アクセスは RBAC またはアクセス ポリシーによって管理され、DefaultAzureCredential を使用すると、アプリはローカル (az login) および本番環境 (AKS 上の Managed Identity/Workload Identity) でコードを変更せずに同じ方法で認証できます。しかし、依然として同じ古いギャップが存在します。Go サービスは起動時に一度 GetSecret を呼び出し、その値を構造体にデコードして、プロセスの存続期間中は不変として扱います。誰かが Key Vault でシークレットをローテーションした場合 (新しいバージョン、古いバージョンは無効化)、サービスはそれを認識しません。デプロイまたはポッドの再起動まで、起動時に読み取った値を使用し続けます。ローテーションは Azure ではシームレスで、アプリからは見えません。これはまさに望ましくない組み合わせです。