簡體   English   中英

如何使用 cdk 創建其他類型的 AWS 機密

[英]How to create an AWS secret of type other using cdk

我正在使用 python 和 cdk。 我有一個堆棧在一個帳戶中創建一個隨機名稱的 dynamo 數據庫表,並且在其他帳戶中運行多個堆棧需要獲取隨機生成的表名。 由於 SSM 參數的限制不允許跨賬戶訪問,我改用 secrets manager

這是我的代碼

secretsmanager.Secret(self, "cdk-generated-secret",
                      secret_name="cdk-generated-secret-name",
                      secret_string_value="{'db-name': str_table_name }"
                      )

這是我得到的錯誤

type of argument secret_string_value must be one of (aws_cdk.SecretValue, NoneType); got str instead

這是一個純文本字符串,不需要加密。 如何將這樣的鍵值字符串寫入secret,然后再讀取呢? 有沒有辦法在不使用隨機生成的后綴的情況下讀取秘密值?

Secrets manager API 一切都是加密的,它不像 SSM Param store 那樣支持未加密的數據。

  1. 擁有或創建客戶管理的 KMS 密鑰。
  2. 更改密鑰策略以允許其他帳戶訪問密鑰。
  3. 存儲 Secret 時使用該 KMS 密鑰。
  4. 向 secret 添加允許其他帳戶訪問的策略。

關於跨賬戶共享機密的 AWS Support 文章: https://aws.amazon.com/premiumsupport/knowledge-center/secrets-manager-share-between-accounts/

仔細查看成本,因為秘密管理器可能不是您想要的。

使用SecretValue.unsafe_plain_text設置 CDK Secret 的明文值。 table_name屬性將在部署時解析為 DynamoDB 表的實際名稱。 可以使用secret_object_value參數設置鍵值對:

secretsmanager.Secret(
    self,
    "PlaintextKeyValueTableNameSecret",
    secret_object_value={
        "db-name": SecretValue.unsafe_plain_text(table.table_name)
    },
)

注意:Secrets Manager 是一種相對昂貴的共享非機密配置的方式。

暫無
暫無

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

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