【问题标题】:How do I authenticate an AWS service using only the role or user ARN instead of accessKeyId and secretAccessKey?如何仅使用角色或用户 ARN 而不是 accessKeyId 和 secretAccessKey 对 AWS 服务进行身份验证?
【发布时间】:2020-05-09 06:41:48
【问题描述】:

所以不要这样做(这是我目前用来访问秘密管理器服务的):

AWS.config.credentials = new AWS.Credentials({
    accessKeyId: "string", 
    secretAccessKey: "string",
} )

// Create a Secrets Manager client
var secretsmanager = new AWS.SecretsManager({
    region: region,
    credentials: AWS.config.credentials
} )

本质上我想做这样的事情:

AWS.config.credentials = new AWS.Credentials({
    userARN/roleARN: "string", 
} )

有没有办法做到这一点?

【问题讨论】:

  • 不,如果可能的话,我会远离 Lambda 函数。环境是在 ElasticBeanstalk EC2 实例上运行的 Node.js
  • 你想做什么?使用分配给实例配置文件的角色?通常,您不能在没有任何身份验证的情况下担任角色。
  • @KevinSeaman 所以我想我的问题是如何在不明确写入 accessKey 和 secretAccessKey 的情况下进行身份验证,我需要初始化登录并不断刷新令牌,还是需要创建证书?我是 AWS 新手,所以我不知道进行身份验证的最佳实践是什么。

标签: amazon-web-services amazon-iam credentials aws-secrets-manager


【解决方案1】:

正如@KevinSeaman 所说,只需将角色附加到您的 EC2 实例即可。凭证会在 EC2 实例元数据中自动安装和轮换。

此外,如果您使用的是标准亚马逊 SDK,SDK 已经知道如何从实例元数据中获取凭证,因此您只需创建客户端并指定区域,无需添加任何凭证。事实上,如果你有一个长期存在的进程,最好让 SDK 获取凭据,因为元数据中的凭据是临时的,大约 6 小时后过期。 SDK 会定期刷新元数据中的凭据。

【讨论】:

    【解决方案2】:

    您不能仅将 RoleName 用于身份验证。

    但是,如果您不想硬编码/配置密钥,您可以在您的机器上配置您的 AWS 密钥并将配置文件加载到您的应用程序(AWS SDK)中。在这种情况下,系统会从您的机器/服务器 aws 配置中加载访问密钥和秘密。

    安装 AWS CL 后,您可以运行“aws config”命令来创建配置文件。

    这可以在您的本地机器或 EC2 上运行。

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2017-06-14
        • 1970-01-01
        • 2020-05-30
        • 2021-07-26
        • 2018-05-25
        • 1970-01-01
        • 2020-01-01
        • 1970-01-01
        • 2016-09-27
        相关资源
        最近更新 更多