我运行这个命令:aws iam list-users,我得到了一个用户列表,但是没有列出权限(如果某人是根用户,或者是s3fullaccess等等)。
我运行另一个命令:aws iam list-user-policies --user-name xxxxx,结果如下:
{
"PolicyNames": []
}我需要哪个命令或者什么命令组合才能显示所有用户以及他们各自的权限?谢谢。
发布于 2020-03-22 23:41:21
该命令仅列出用户的内联策略,您还需要获取附加到IAM用户的托管策略的列表。然后,您还需要获取用户所属的组的列表,并列出附加到每个组的内联策略和托管策略。
因此,在CLI中,您需要执行以下操作:
aws iam list-user-policies
aws iam list-attached-user-policies
aws iam list-groups-for-user
# For each group:
aws iam list-group-policies
aws iam list-attached-group-policies我强烈推荐在Python和Boto3中这样做,而不是使用AWS CLI工具。
发布于 2021-10-26 18:41:25
受这篇文章的启发,我写这篇文章是为了在清除用户权限之前捕获它们,以防以后需要恢复它们:
function _getUserIamPermissions() {
export AWS_PAGER="";
local _user="${1}";
local outputManagedPolicies="";
local outputUserPolicies="";
local outputManagedGroupPolicies="";
local outputGroupPolicies="";
# Managed Policies Attached to the IAM User
local _managedpolicies=$(aws iam list-attached-user-policies --user-name "${_user}" | jq -r '.AttachedPolicies[].PolicyArn';);
for policy in ${_managedpolicies}; do
local versionId=$(aws iam get-policy --policy-arn "${policy}" | jq -r '.Policy.DefaultVersionId';);
outputManagedPolicies=$(aws iam get-policy-version --policy-arn "${policy}" --version-id "${versionId}";);
printf "%s" "${outputManagedPolicies}";
done;
# Inline Policies on the IAM User
local _userpolicies=$(aws iam list-user-policies --user-name "${_user}" | jq -r '.PolicyNames[]';);
for policy in ${_userpolicies}; do
outputUserPolicies=$(aws iam get-user-policy --user-name "${_user}" --policy-name "${policy}";);
printf "%s" "${outputUserPolicies}";
done;
# Get all of the IAM User's assigned IAM Groups
local _groups=$(aws iam list-groups-for-user --user-name "${_user}" | jq -r '.Groups[].GroupName';);
for group in ${_groups}; do
# Managed Policies Attached to the IAM Group
local _managedgrouppolicies=$(aws iam list-attached-group-policies --group-name "${group}" | jq -r '.AttachedPolicies[].PolicyArn';);
for policy in ${_managedgrouppolicies}; do
local versionId=$(aws iam get-policy --policy-arn "${policy}" | jq -r '.Policy.DefaultVersionId';);
outputManagedGroupPolicies=$(aws iam get-policy-version --policy-arn "${policy}" --version-id "${versionId}" | jq --arg arn "${policy}" '{"PolicyArn": $arn, "Policy": .}';);
printf "%s" "${outputManagedGroupPolicies}";
done;
# Inline Policies on the IAM Group
local _grouppolicies=$(aws iam list-group-policies --group-name "${group}" | jq -r '.PolicyNames[]';);
for policy in ${_grouppolicies}; do
outputGroupPolicies=$(aws iam get-group-policy --group-name "${group}" --policy-name "${policy}";);
printf "%s" "${outputGroupPolicies}";
done;
done;
}
function getUserIamPermissions() {
local username="${1}";
_getUserIamPermissions "${username}" | jq -s;
}根据此处提供的信息更新:# https://www.badllama.com/content/using-aws-cli-check-user-permissions
用法:使用它的最快方式,以及我使用它的方式,都是通过亚马逊网络服务CloudShell。我打开CloudShell终端,将其粘贴进去,然后运行:
getUserIamPermissions <username>输出是一个JSON数组,其中包含用户的所有内容:
发布于 2021-09-15 16:23:16
首先,您将获得策略列表(正如@Mark-b在anser中提到的那样)
接下来,您将获得每个策略的版本:
aws iam list-policy-versions --policy-arn
对于具体的版本,查询PolicyDocument
aws iam get-policy-version --policy-arn arn:aws:iam::123456789012:policy/MyPolicy --version-id vX
您将获得带有IAM策略语句的JSON格式的PolicyDocument。
https://stackoverflow.com/questions/60799709
复制相似问题