簡體   English   中英

spring boot +從不同的AWS賬戶加載秘密管理器秘密

[英]spring boot + load secret manager secrets from different AWS account

我正在開發一個新的 Spring Boot 應用程序,它將與 AWS-Postgres 數據庫進行交互。 無服務器數據庫托管在不同的 AWS 賬戶中,其機密存儲在 Secretmanager 中。

如何有效地從跨賬戶秘密管理器獲取數據庫憑據?

在 POC 中,我通過使用像這樣的STSAssumeRoleSessionCredentials構造一個秘密管理器客戶端來STSAssumeRoleSessionCredentials這一點

AWSSecretsManager awsSecretsManager = AWSSecretsManagerClientBuilder.standard()
                .withCredentials(credentialsProvider). // AssumeRole ( cross account session token)
                .withRegion("us-west-2")
                .build();

我執行了以下步驟來解決用例,但我認為這不是一個干凈的解決方案。

  1. 獲取憑據
  2. 使用上述數據庫憑據填充 env 變量
  3. 讓 spring-boot/jpa 設置數據庫連接

我認為它可以使用spring-cloud-starter-aws-secrets-manager-config但沒有找到關於如何配置它的任何示例/參考,以便它可以從不同 AWS 帳戶中的 SecretManager 獲取憑證.

上述方法如何工作,或者有什么更好的解決方案可用?

你是對的,它可以在代碼方面進一步簡化。

假設 accountA 有機密,而 accountB 是您的應用程序帳戶。 當前實現執行以下操作:

  • 使用 accountA 憑據在 accountB 內部創建客戶端(遵循 AssumeRole 並且是最佳實踐)
  • 獲取秘密然后使用。

可以做什么:

  • 在 accountA 中使用基於資源的策略,讓 accountB 中的 IAM 用戶和/或 IAM 角色可以訪問放置在 accountA 中的機密。
  • 更新 accountA 中用於加密/解密機密的密鑰的 KMS 密鑰策略。 讓同一 IAM 用戶和/或角色有權訪問該 KMS 密鑰。 以便他們可以使用它。
  • 更新 accountB 中 IAM 用戶和/或角色的 IAM 策略,明確允許它使用 accountA 的機密和 KMS 密鑰。

現在,您可以使用用於應用程序的相同 IAM 用戶/角色訪問機密,理論上spring-cloud-starter-aws-secrets-manager-config應該從 accountA 獲取機密(我還沒有測試為我自己)。

您將獲得的最少好處是不會為不同的帳戶創建假定的角色客戶端。 有關 AWS 博客的更多詳細信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM