无需访问控制台的AWS Access密钥

时间:2018-12-11 19:35:49

标签: aws-iam

是否可以在不从控制台生成密钥的情况下获取AWS访问密钥?

我希望能够创建一个脚本,该脚本将询问用户/密码/(TOTP)并生成临时访问密钥,以执行多个任务。 目标是能够给一个程序供开发人员使用,这样他们甚至不必每次都知道访问密码就可以处理访问密钥。

我所相信的地方无处不在,但是即使可行,也找不到任何资源。

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,这是可行的。

都可以通过命令行界面(CLI)和API进行。

CLI命令为:

aws iam create-access-key

API调用为:

CreateAccessKey

有关更多信息,请参见下面的文档参考。这是一本好书,涵盖了最佳实践主题,例如使用API​​或CLI旋转密钥。另一个最佳做法是使用您的根帐户进行日常使用。

https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey_CLIAPI

使用CLI更新密钥旋转示例:

在通过CLI尝试此操作之前-创建具有管理员权限的新IAM用户。

步骤1 -将CLI配置为使用管理员密钥:

aws configure

然后输入管理员的访问密钥ID和秘密访问密钥。

步骤2 -列出用户foo的键

 aws iam list-access-keys --user-name foo

输出将类似于:

{
    "AccessKeyMetadata": [
        {
            "UserName": "foo",
            "AccessKeyId": "AKIAIY*****A7YBHCBEBQ",
            "Status": "Active",
            "CreateDate": "2018-11-10T14:02:56Z"
        }
    ]
}

验证只有一个,因为一个用户最多可以拥有2个。如果他们已经拥有2个,则第3步将失败。

步骤3 -为用户foo创建新密钥

aws iam create-access-key --user-name foo

您将看到类似于以下的输出。这是您唯一一次看到新集的密钥,因此需要保留它。

{
    "AccessKey": {
        "UserName": "foo",
        "AccessKeyId": "****GAGA*****WEFWEWE",
        "Status": "Active",
        "SecretAccessKey": "*****sEcReT*****Tasdasd",
        "CreateDate": "2018-12-01T19:16:41Z"
    }
}

新密钥已创建并处于活动状态。现在,您需要删除旧密钥才能完成旋转。我会把那一步留给你。

如果出现错误:

An error occurred (InvalidClientTokenId) when calling the ListAccessKeys operation: The security token included in the request is invalid.

然后这是一个迹象,表明您正在从您的令牌已过期,无效或没有正确权限的帐户尝试此操作。