не может получить доступ к другим ролям при ограничении доступа на основе тегов - PullRequest
0 голосов
/ 19 февраля 2020

Я хочу разрешить моей роли доступ только к ролям с указанным тегом c. Поэтому я создал политику:

    "Statement": [
        {
            "Action": [
                "iam:GetRole"
            ],
            "Resource": "*",
            "Effect": "Allow",
            "Condition": {
                "StringLike": {
                    "iam:ResourceTag/key": "value"
                }
            }
        }
    ]
}

и для каждой соответствующей роли добавил тег со свойствами - key - value.

Однако, когда я использую указанную роль c, я получаю следующие ошибки: AccessDenied. User doesn't have permission to call iam:GetRole

Есть идеи?

1 Ответ

0 голосов
/ 19 февраля 2020

Я создал политику с этим json и прикрепил ее к роли, которую я запускал с помощью лямбды. Мне удалось получить арсенал роли IAM: Role с тегом «значение ключа» и отказ в доступе к тегу, который этого не сделал. Возможно, вы неправильно подключаете политику или, возможно, пытаетесь выполнить действие, используя другую роль, попробуйте создать профиль экземпляра, присоединить его к ec2 и выполнить команды оттуда или через лямбду. tldr; проблема json в другом месте.

{
"Version": "2012-10-17",
"Statement": [
    {
        "Condition": {
            "StringLike": {
                "iam:ResourceTag/key": "value"
            }
        },
        "Action": [
            "iam:GetRole"
        ],
        "Resource": "*",
        "Effect": "Allow"
    }
]

}

Вот полный стек CF, который я использовал. Это чертовски, и, очевидно, принцип должен быть изменен в зависимости от ваших потребностей.

 Resources:
  Role: 
    Type: "AWS::IAM::Role"
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - lambda.amazonaws.com
            - edgelambda.amazonaws.com
          Action: sts:AssumeRole
      ManagedPolicyArns:
      - !Ref Policy
  Policy:
      Type: AWS::IAM::ManagedPolicy
      Properties:
          ManagedPolicyName: Get_Role_With_Tag__Policy
          Path: /
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                - iam:GetRole
                Condition:
                  StringLike:
                    iam:ResourceTag/key: "value"
                Resource: "*"
...