如何在本地服务器上配置AWS角色?

时间:2018-12-23 21:12:24

标签: amazon-web-services roles on-prem

我创建了一个AWS角色,并附加了将对象放入S3存储桶的策略。

我有一个使用该角色的本地Python应用程序。我的个人AWS用户有权承担角色。这是我使用的一些代码:

assumed_role_object = sts_client.assume_role(
    RoleArn="arn:aws:iam::account-id:role/test-role",
    RoleSessionName="myRoleSession"
)

这一切都很好,但是现在我的问题是我必须如何在本地服务器上配置它,而我没有配置我的个人用户来担任这个角色。

我正在考虑创建一个仅具有acceptRole权限的IAM用户,并使用该用户承担我的应用程序的角色。

我使用test-role-trust-policy.json

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
        "Action": "sts:AssumeRole"
    }
}

并以此创建角色:

aws iam create-role --role-name test-role --assume-role-policy-document file://test-role-trust-policy.json

为我的角色添加必要的策略(以放置S3对象)并在我的应用程序中使用该角色。

这是为本地服务器配置角色的正确方法吗?我发现创建一个用户在本地服务器上使用角色很奇怪(尽管现在用户的权限受到限制)。

对于我是否还必须使用root作为主体还是我的用户,这还不是很清楚?

1 个答案:

答案 0 :(得分:0)

我认为您为此用途创建特殊用户的方法没有任何问题。可以是没有控制台登录名且仅具有承担指定角色权限的用户。

另一种方法是使用lambda创建预先签名的URL。使用这些网址,您的应用程序完全不需要AIM角色即可将对象放入该存储桶中。该URL仅在您想要的时间内工作。您也可以将URL设计为仅允许特定的文件名和其他选项。

如果要在另一个AWS资源(例如EC2实例)上运行它,则也可以直接为该实例指定角色。