Облако информации я могу создать новую роль со ссылкой на существующую политику?


10

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

Моя проблема в том, что существует общая роль с определенными политиками, которую я также хочу включить в свою новую роль для каждого стека.

В облачной информации можно ли включить политики, определенные в одной роли, для включения в другую роль без необходимости переопределять документ политики в новой роли?

Что-то вроде следующего:

"AppTierS3AccessRole": {
        "Type": "AWS::IAM::Role",
        "Properties": {
            "AssumeRolePolicyDocument": {
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": [ "ec2.amazonaws.com" ]
                        },
                        "Action": [ "sts:AssumeRole" ]
                    }
                ]
            },
            "Path": "/",
            "Policies": [ { "Ref": "existing-policy" } ]
        }
    },

«Существующая политика» является важной частью здесь. Я пытался найти арну существующей политики, чтобы попытаться сослаться на нее, но я немного застрял.


То же самое решение, вероятно, может быть реализовано путем добавления нескольких ролей в профили экземпляра, но из того, что я прочитал, есть ограничение, что вы можете указать только одну роль для каждого профиля экземпляра.
hughmcmanus

Ответы:


12

источник: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html

В AWS::IAM::Roleтипы теперь есть ManagedPolicyArnsполе , где вы можете установить это. Вам просто нужно взять ARN (легко захватить с консоли IAM) и поместить его в это поле. В приведенном ниже примере я создал роль, которая обеспечивает доступ к ECR только для чтения, чтобы мой образ мог извлекать док-контейнеры из ECR.

  ecrRole:
    Type: AWS::IAM::Role
    Properties:
      Path: "/"
      ManagedPolicyArns:
        - "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly"
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
        - Effect: Allow
          Principal:
            Service:
            - ec2.amazonaws.com
          Action:
          - sts:AssumeRole

4

Вы можете достичь этого с помощью управляемых политик . Поместите определенную политику, которой вы хотите поделиться, в управляемую клиентом политику, затем прикрепите эту определенную политику к каждой роли, в которой вы хотите ее использовать. Любые будущие изменения в вашей управляемой политике будут немедленно применены ко всем ролям, к которым прикреплена управляемая политика.

Вы можете создать управляемую политику клиента в CloudFormation через ресурс AWS :: IAM :: ManagedPolicy или присоединить существующую управляемую политику.


3
Можете показать как в Cloudformation?
одинокий

1

Чтобы расширить ответ @ markusk о: Управляемые политики - да, это.

Пример:

"ManagedPolicy": {
  "Type": "AWS::IAM::ManagedPolicy",
  "Properties": {
    "Description": "something descriptive",
    "Groups": [ ... ref(s) for groups ... ],
    "Roles: [{"Ref":"AppTierS3AccessRole"}],
    "Users": [ ... ref(s) for users ... ],
    "PolicyDocument": {
      "Version": "2012-10-17",
      "Statement": [
        ...
      ]
    }
  }
}

-1

Нет, в настоящее время вы не можете встроить одну роль в другую. Единственные альтернативы, о которых я могу думать:

  • Создайте новый профиль экземпляра с помощью AWS :: IAM :: InstanceProfile и назначьте ему существующую универсальную роль.
  • Перед созданием стека CloudFormation запустите сценарий, который дублирует общую роль. Например, он создает новую роль, перечисляет все политики для существующей общей роли и заново создает их в новой роли. Затем вы можете назначить новую роль новому ресурсу AWS :: IAM :: InstanceProfile в своем шаблоне и использовать его для своих экземпляров EC2 или для запуска конфигурации.

Я закончил тем, что делал что-то похожее на ваше второе предложение. Я переместил политики в общей роли в шаблон облачной информации, а затем добавил их в новую роль, если она будет создана.
hughmcmanus

Хотя этот ответ был правильным при написании, он дольше, поскольку с тех пор AWS ввел управляемые политики , что позволяет вам повторно использовать политики.
Markusk
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.