如何在 aws lambda 中隐藏 sql 连接字符串?
How to hide sql connection strings in aws lambda?
以下是我的连接方式。 Lambda 中是否有任何方法可以设置不可见且理想情况下会交叉到多个 lambda 的环境变量?理想情况下,在我可以使用 SDK 访问并跨所有 AWS 服务使用的另一个 AWS 服务中?
var MYSQL = require('mysql');
var AWS = require('aws-sdk');
exports.handler = (event, context, callback) => {
var connection = MYSQL.createConnection({
host : '127.0.0.1',
port : '3306',
user : 'myuser',
password : 'mypass',
database : 'mydb'
});
connection.connect();
我会将其存储在 DynamoDB table 或 S3 存储桶中。您可以为 Lambda 分配一个 IAM 角色以允许访问这些 - 也许是只读的。
或者,Lambda 现在有像 Elastic Beanstalk 这样的环境变量,您可以那样设置它。它们可以被加密,尽管这也增加了一些复杂性。
您现在可以使用 encrypted environment variables。
在幕后,他们将使用 KMS 来加密值,然后允许您的 Lambda 函数使用它们,就好像它们是容器上下文中的纯文本一样。
恐怕之前给出的答案有些缺乏相关性。 AWS 推荐的存储此类数据(如 lambda 的连接字符串)的方法是 Systems Manager Parameter Store:
AWS Systems Manager provides a centralized store to manage your
configuration data, whether plain-text data such as database strings
or secrets such as passwords. This enables you to separate your
secrets and configuration data from your code.
以下是我的连接方式。 Lambda 中是否有任何方法可以设置不可见且理想情况下会交叉到多个 lambda 的环境变量?理想情况下,在我可以使用 SDK 访问并跨所有 AWS 服务使用的另一个 AWS 服务中?
var MYSQL = require('mysql');
var AWS = require('aws-sdk');
exports.handler = (event, context, callback) => {
var connection = MYSQL.createConnection({
host : '127.0.0.1',
port : '3306',
user : 'myuser',
password : 'mypass',
database : 'mydb'
});
connection.connect();
我会将其存储在 DynamoDB table 或 S3 存储桶中。您可以为 Lambda 分配一个 IAM 角色以允许访问这些 - 也许是只读的。
或者,Lambda 现在有像 Elastic Beanstalk 这样的环境变量,您可以那样设置它。它们可以被加密,尽管这也增加了一些复杂性。
您现在可以使用 encrypted environment variables。
在幕后,他们将使用 KMS 来加密值,然后允许您的 Lambda 函数使用它们,就好像它们是容器上下文中的纯文本一样。
恐怕之前给出的答案有些缺乏相关性。 AWS 推荐的存储此类数据(如 lambda 的连接字符串)的方法是 Systems Manager Parameter Store:
AWS Systems Manager provides a centralized store to manage your configuration data, whether plain-text data such as database strings or secrets such as passwords. This enables you to separate your secrets and configuration data from your code.