将敏感令牌安全地发送到 SNS 以便在 Lambda 中使用

Securely send sensitive token to SNS for use in Lambda

我需要向 AWS Lambda 函数发送另一项服务的密钥和机密。我可以将 key/secret 烘焙到函数中,但随后我必须重新发布 Lambda 函数 when/if 它们发生了变化,这似乎是不可取的。

我正在通过 SNS 触发我的 Lambda 函数。所以我的工作流程是:

我假设 SNS 发布是通过 HTTPS 完成的,因此 Server -> SNS topic 将被加密。

没看到具体叫出来的是从SNS -> Lambda转来的。我再次假设它是安全完成的,但我正在寻找验证。

我在 AWS Lambda Example for a Slack Echo Service 中看到的另一个选项是使用 AWS Key Management 进行加密和解密。例如,使用 python:

kms = boto3.client('kms')
key = kms.decrypt(CiphertextBlob = b64decode(event["key"]))['Plaintext']
secret = kms.decrypt(CiphertextBlob = b64decode(event["secret"]))['Plaintext']

在这里使用 Key Management Encryption Services overkill/even 还是我可以只发送负载并让 HTTPS 处理它?

我是否应该因为甚至想在 SNS -> Lambda 上发送 key/secret 之类的东西而被公开鞭打,而是应该将其烘焙到 Lambda 函数本身。

我无法回答关于SNS->Lambda 加密的问题。我会假设,像你一样,这是通过 HTTPS,但我认为你需要联系 AWS 支持以获得确认。

关于您的其他问题,我认为 KMS 实际上非常适合这个问题,而且不一定矫枉过正。您可能会考虑的另一种选择是将密钥存储在 DynamoDB 中。我还看到有人建议像这样在 S3 中存储 Lambda 配置数据。