我们如何使用 aws cli 命令用新的 json 文件更新现有的 iam 策略

问题描述 投票:0回答:2

我们如何使用 aws cli 命令用新的 json 文件更新现有的 iam 策略?

我已经有一个名为 mypolicy 的策略。我想使用新的 json 文件(可以访问不同的资源)更新此策略。如何使用 aws cli 命令执行此操作?

我试图找到 cli 命令。我从 AWS 页面找到了以下命令:

aws organizations update-policy \
    --policy-id p-examplepolicyid111 \
    --content "{\"Version\":\"2012-10-17\",\"Statement\":{\"Effect\":\"Allow\",\"Action\":\"s3:*\",\"Resource\":\"*\"}}"

但是,使用这个命令我没有找到任何方法用新的 json 替换策略。

amazon-web-services amazon-iam
2个回答
7
投票

创建策略版本。

aws iam create-policy-version 
 --policy-arn arn:aws:iam::123456789012:policy/MyPolicy 
 --policy-document file://NewPolicyVersion.json --set-as-default

https://docs.aws.amazon.com/cli/latest/reference/iam/create-policy-version.html

列出客户管理的政策

aws iam list-policies --scope Local

通过 arn 获取保单

aws iam get-policy --policy-arn arn:aws:iam::123456789012:policy/MyPolicy

0
投票

如果您有超过 4 个策略,您将无法运行 aws iam create-policy-version 命令。要在一个脚本中解决这一问题,您可以执行以下操作:

#!/bin/bash

POLICY_ARN='arn:aws:iam::1234567890:policy/my-policy'

if [ "$(aws iam list-policy-versions --policy-arn ${POLICY_ARN} | jq -r '.Versions[].VersionId' | wc -l)" -gt 4 ]; then
    OLDEST_VERSION=$(aws iam list-policy-versions --policy-arn ${POLICY_ARN} | \
      jq -r '.Versions |= sort_by(.CreateDate) | .Versions[0].VersionId')
    echo "You have more than 4 versions of ${POLICY_ARN}."
    echo "Deleting oldest version: ${OLDEST_VERSION}"
    aws iam delete-policy-version --policy-arn ${POLICY_ARN} \
       --version-id "${OLDEST_VERSION}"
fi

aws iam create-policy-version --policy-arn ${POLICY_ARN} \
   --policy-document file://new-policy.json --set-as-default

这将删除最旧的版本,然后使用本地文件 new-policy.json 中找到的策略创建新版本。在运行上述命令之前,该文件必须已经存在。

© www.soinside.com 2019 - 2024. All rights reserved.