Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS系统管理器参数存储vs机密管理器vs Lambda中的环境变化,何时使用哪个_Amazon Web Services_Environment Variables_Aws Secrets Manager - Fatal编程技术网

Amazon web services AWS系统管理器参数存储vs机密管理器vs Lambda中的环境变化,何时使用哪个

Amazon web services AWS系统管理器参数存储vs机密管理器vs Lambda中的环境变化,何时使用哪个,amazon-web-services,environment-variables,aws-secrets-manager,Amazon Web Services,Environment Variables,Aws Secrets Manager,遇到了一些我有点困惑的特定用例: 大量免费的公共API密钥。使用带有encyption的lambda环境变量,其他开发人员/管理员仍然可以在lambds控制台中公开其明文值。是否应该使用参数存储 登录到第三方平台的凭据。我想只有“秘密经理”可以选择 数据库连接字符串。秘密经理?按照0.40美元/秘密/月的价格计算,仅存储凭证就需要数百个数据库 对于存储任何凭据,您有三个AWS托管选项: Lambda环境变量 这些将通过Lambda服务直接传递到Lambda函数中。您可以通过控制字符串值来阻止其他

遇到了一些我有点困惑的特定用例:

  • 大量免费的公共API密钥。使用带有encyption的lambda环境变量,其他开发人员/管理员仍然可以在lambds控制台中公开其明文值。是否应该使用参数存储
  • 登录到第三方平台的凭据。我想只有“秘密经理”可以选择
  • 数据库连接字符串。秘密经理?按照0.40美元/秘密/月的价格计算,仅存储凭证就需要数百个数据库

  • 对于存储任何凭据,您有三个AWS托管选项:

    Lambda环境变量

    这些将通过Lambda服务直接传递到Lambda函数中。您可以通过控制字符串值来阻止其他人访问字符串值。这将提供所有选项中最好的性能(代码运行时中没有额外的查找)

    通过使用此选项,请注意以下陷阱:

    • 如果对Lambda函数使用版本控制,则值是固定的,需要部署Lambda函数的新版本以进行更改
    • 值附加到单个Lambda函数,如果键由多个函数使用,则需要分别传递到每个函数
    系统管理器参数存储

    使用此选项,您可以使用SDK检索所需的任何键/值。它可以存储纯文本值和加密字符串(类型)。它提供了基本的功能,但如果这就是您所需要的,那么它将非常有用。存储值不需要任何费用,但价格是每10000个参数存储API交互0.05美元。与环境变量不同,您可以跨多个Lambda函数使用该值

    使用此选项时,您需要注意以下几点:

    • 每次检索值都会对性能造成影响,以减少在全局上下文中对函数的调用,从而在调用之间可以重用该函数
    • 每个键/值都需要一个单独的参数。对于数据库,这意味着要么创建单个参数,要么将整个凭证集存储为JSON对象,并在检索后解码
    机密管理器

    使用此选项,服务中内置了许多管理,机密可以包含字符串或单行JSON对象。SDK将处理这些值的检索,但您必须意识到,就像SSM一样,您将受到性能的影响,因此您需要查看与参数存储类似的解决方案。与SSM参数存储相比,secrets manager的最大优势在于它与其他AWS服务的集成,允许诸如秘密旋转等功能

    但是,如果您不需要secrets manager的功能,您可能需要支付比实际需要更多的费用,这是三个选项中最昂贵的选项

    大量免费的公共API密钥。使用带有encyption的lambda环境变量,其他开发人员/管理员仍然可以在lambds控制台中公开其明文值

    对于开发人员能够在控制台中查看环境变量的问题,您可以使用非默认的KMS CMK,并在该密钥上配置权限,以便其他开发人员无法使用它()。他们仍然能够看到Lambda配置的其余部分

    更大的问题是如何配置这些环境变量。例如,如果您使用Terraform,配置将写入状态文件,您将需要使用外部状态(存储在S3或HashiCorp的服务器上)来保护它。如果您使用的是CloudFormation,则可以使用机密管理器机密配置它们,但不能将其配置为参数存储安全字符串

    另一种选择是使用环境变量引用参数存储键,然后以编程方式检索值。例如,您有一个名为
    DATABASE\u PASSWORD
    的环境变量,其值为
    /dev/DATABASE/PASSWORD
    ;实际的数据库密码是参数存储中的SecureString,通过该路径访问

    登录到第三方平台的凭据。我想只有“秘密经理”可以选择

    参数存储区还提供SecureString

    数据库连接字符串。秘密经理?按照0.40美元/秘密/月的价格计算,仅存储凭证就需要数百个数据库

    您的应用程序是否实际连接到数百个数据库?如果是,40美元/月(100个连接)真的是贵公司的财政困难吗

    如果是,那么参数存储可能是最佳选择,但请注意,每个帐户的“免费”参数数量有限