所有AWS IAM角色都有一个相关的角色名称和角色ID。角色ID通常不会被看到,因为AWS控制台只显示角色名称。在S3事件有一个PrincipalID值的JSON消息中,包含用于执行S3操作(例如"principalId":"AWS:AROAKJDKSDKF93HSA:123456789 )的角色的角色ID。
从本文件我们看到,
每个IAM实体(用户、组或角色)都有一个定义的aws:userid变量。您将需要使用此变量在桶策略中将角色或用户指定为条件元素中的异常。假设角色的aws:userId值被定义为唯一-角色-ID:角色-会话-名称(例如,AROAEXAMPLEID:userdefinedsessionname)。
因此,我们知道,PrincipalId中的S3事件消息是一个角色ID到一个IAM角色。如何使用该角色ID获取角色名称?我已经搜索了IAM和STS库,但是我没有看到任何允许我传入角色ID和获取角色名称的API。STS GetCallerIdentity没有帮助,IAM GetRole只接受一个角色名作为输入。
任何帮助都将不胜感激。我只是在消费S3事件,从S3事件的消息json读取PrincipalID值,从PrincipalID中提取IAM角色ID,并且我需要一种使用IAM角色ID获取IAM角色名称的方法。
发布于 2020-02-28 00:02:54
例如,使用python,您可以使用list_roles。
输出将给出每个角色的角色id。只需循环它并搜索您想要的RoleId。
{
'Roles': [
{
'Path': 'string',
'RoleName': 'string',
'RoleId': 'string',
'Arn': 'string',
'CreateDate': datetime(2015, 1, 1),
'AssumeRolePolicyDocument': 'string',
'Description': 'string',
'MaxSessionDuration': 123,
'PermissionsBoundary': {
'PermissionsBoundaryType': 'PermissionsBoundaryPolicy',
'PermissionsBoundaryArn': 'string'
},
'Tags': [
{
'Key': 'string',
'Value': 'string'
},
],
'RoleLastUsed': {
'LastUsedDate': datetime(2015, 1, 1),
'Region': 'string'
}
},
],
'IsTruncated': True|False,
'Marker': 'string'
}RoleId (字符串) 标识角色的稳定和唯一字符串。有关ID的详细信息,请参阅IAM用户指南中的IAM标识符。
参考资料:角色
此外,我建议您使用Paginator。
有些AWS操作返回的结果是不完整的,需要后续请求才能获得整个结果集。在先前的请求被称为分页的情况下发送后续请求以继续的过程。
参考资料:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html
发布于 2020-07-14 21:12:06
下面是一种通过AWS的快速方法:
aws iam list-roles --query 'Roles[?RoleId==`AROAEXAMPLEID`]'https://stackoverflow.com/questions/60441991
复制相似问题