将敏感令牌安全地发送到 SNS 以便在 Lambda 中使用
Securely send sensitive token to SNS for use in Lambda
我需要向 AWS Lambda 函数发送另一项服务的密钥和机密。我可以将 key/secret 烘焙到函数中,但随后我必须重新发布 Lambda 函数 when/if 它们发生了变化,这似乎是不可取的。
我正在通过 SNS 触发我的 Lambda 函数。所以我的工作流程是:
- 准备负载
- 将负载发布到 SNS 主题
- Lambda 运行接收负载,
- Lambda 使用负载中提供的 key/secret 对另一个 API
执行必要的操作
我假设 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 配置数据。
我需要向 AWS Lambda 函数发送另一项服务的密钥和机密。我可以将 key/secret 烘焙到函数中,但随后我必须重新发布 Lambda 函数 when/if 它们发生了变化,这似乎是不可取的。
我正在通过 SNS 触发我的 Lambda 函数。所以我的工作流程是:
- 准备负载
- 将负载发布到 SNS 主题
- Lambda 运行接收负载,
- Lambda 使用负载中提供的 key/secret 对另一个 API 执行必要的操作
我假设 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 配置数据。