AWS boto3: имитация роли IAM для заданного разрешения json файл политики - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь использовать AWS IAM-Simulator с boto3

Допустим, у меня есть файлы policy1. json, policy2. json действующие aws политики IAM jsons. Допустим, json1 содержит:

{
"Version": "2023-12-15",
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ec2:CreateSnapshot",
            "ec2:CreateTags"
        ],
        "Resource": "*"
    },
    {
        "Effect": "Allow",
        "Action": "ec2:DeleteSnapshot",
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "ec2:ResourceTag/my_cool_tag": "*"
            }
        }
    }
]

}

Я хочу проверить, может ли пользователь с примененной ролью, скажем, role_arn = 12345 выполнять действия, указанные в файлах политики json .

Я хочу, чтобы он был общим c, то есть имел возможность получать любой допустимый файл политики и имитировать, может ли прикрепленная arn роль выполнять все действия с / без условий указан в политике. json файл (для любого файла)

Есть ли способ использовать boto3 для этого? Я попытался прочитать документацию, но не смог найти ни одного примера, который делает это

Для этого примера я придумал:

        ressult1 =iam_client.simulate_principal_policy(
        PolicySourceArn=12345,
        ActionNames=[
        "ec2:CreateSnapshot",
        "ec2:CreateTags"
    ])

    ressult2 =iam_client.simulate_principal_policy(
        PolicySourceArn=12345,
        ActionNames=[ec2:DeleteSnapshot],
        ContextEntries=[
            {"ContextKeyName": "ec2:ResourceTag/my_cool_tag", "ContextKeyValues": [""], "ContextKeyType": "string",}
        ])

Но это не является общим, хотелось бы что-то сделать вот так:

    with open('policy1.json') as json_file:
          policy_data = json.load(json_file)
          ressult =iam_client.simulate_principal_policy(
                     PolicySourceArn=12345,
                     policy_dict = policy_loaded)

был бы признателен за помощь здесь. Спасибо!

...