На данный момент у меня есть общая корзина S3, которая имеет определенный доступ к определенным ключевым путям (то есть папкам) для разных экземпляров. Мне удалось создать профиль экземпляра с моей новой ролью и проверить отсутствие проблем с ограничением доступа к этой папке.
Моя проблема в том, что существует существующая общая роль с определенными политиками, которую я также хочу включить в свою новую роль для каждого стека.
В облачной информации можно ли включить политики, определенные в одной роли, для включения в другую роль без необходимости переопределения документа политики в новой роли?
Примерно так:
"AppTierS3AccessRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [ "ec2.amazonaws.com" ]
},
"Action": [ "sts:AssumeRole" ]
}
]
},
"Path": "/",
"Policies": [ { "Ref": "existing-policy" } ]
}
},
«Существующая политика» является здесь важной частью. Я пытался найти arn существующей политики, чтобы попытаться сослаться на нее, но я немного застрял.
src: 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
Вы можете добиться этого, используя управляемые политики. Поместите определенную политику, которой вы хотите поделиться, в управляемую клиентом политику, затем прикрепите эту определенную политику к каждой роли, где вы хотите ее использовать. Любые будущие изменения вашей управляемой политики будут немедленно применены ко всем ролям, к которым прикреплена управляемая политика.
Вы можете создать политику, управляемую клиентом, в CloudFormation с помощью AWS :: IAM :: ManagedPolicy ресурс или присоедините существующую управляемую политику.
Чтобы расширить ответ @ markusk re: Managed Policies - да, это.
Пример:
"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": [
...
]
}
}
}
Нет, в настоящее время нельзя встроить одну роль в другую. Единственные альтернативы, которые я могу придумать: