Add CloudFormation write IAM role, managed policy, and repository README
This commit is contained in:
commit
ef8bceff67
3 changed files with 111 additions and 0 deletions
11
README.md
Normal file
11
README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
# CloudFormation Write IAM Definitions
|
||||||
|
|
||||||
|
This repository defines IAM roles and policies for safely executing AWS CloudFormation operations via `AssumeRole`.
|
||||||
|
|
||||||
|
- `roles/cloudformation-write-role.yaml`
|
||||||
|
IAM role for CloudFormation execution, including ECR import permissions.
|
||||||
|
Assumable by specified IAM Identity Center roles.
|
||||||
|
|
||||||
|
- `policies/cloudformation-write-policy.yaml`
|
||||||
|
Managed policy granting minimal CloudFormation write access.
|
||||||
|
Intended for use via the execution role, not attached directly to users.
|
||||||
42
policies/cloudformation-write-policy.yaml
Normal file
42
policies/cloudformation-write-policy.yaml
Normal file
|
|
@ -0,0 +1,42 @@
|
||||||
|
AWSTemplateFormatVersion: '2010-09-09'
|
||||||
|
Description: CloudFormation Write-Only Managed Policy for Deployment Operations
|
||||||
|
|
||||||
|
Resources:
|
||||||
|
CloudFormationWritePolicy:
|
||||||
|
Type: AWS::IAM::ManagedPolicy
|
||||||
|
Properties:
|
||||||
|
ManagedPolicyName: CloudFormationWrite
|
||||||
|
Description: Minimal CloudFormation write permissions for deployment operations. Intended for use via AssumeRole, not attached to Permission Sets.
|
||||||
|
PolicyDocument:
|
||||||
|
Version: '2012-10-17'
|
||||||
|
Statement:
|
||||||
|
- Effect: Allow
|
||||||
|
Action:
|
||||||
|
- cloudformation:CreateStack
|
||||||
|
- cloudformation:UpdateStack
|
||||||
|
- cloudformation:DeleteStack
|
||||||
|
- cloudformation:CreateUploadBucket
|
||||||
|
- cloudformation:CreateChangeSet
|
||||||
|
- cloudformation:ExecuteChangeSet
|
||||||
|
- cloudformation:DescribeStacks
|
||||||
|
- cloudformation:DescribeStackEvents
|
||||||
|
- cloudformation:DescribeChangeSet
|
||||||
|
- cloudformation:ListStacks
|
||||||
|
- cloudformation:ListChangeSets
|
||||||
|
- cloudformation:DetectStackDrift
|
||||||
|
- cloudformation:DetectStackResourceDrift
|
||||||
|
- cloudformation:DescribeStackDriftDetectionStatus
|
||||||
|
- cloudformation:ImportStacksToStackSet
|
||||||
|
- cloudformation:ContinueUpdateRollback
|
||||||
|
Resource: "*"
|
||||||
|
|
||||||
|
- Effect: Allow
|
||||||
|
Action:
|
||||||
|
- tag:TagResources
|
||||||
|
- tag:UntagResources
|
||||||
|
Resource: "*"
|
||||||
|
|
||||||
|
- Effect: Allow
|
||||||
|
Action:
|
||||||
|
- s3:PutObject
|
||||||
|
Resource: "*"
|
||||||
58
roles/cloudformation-write-role.yaml
Normal file
58
roles/cloudformation-write-role.yaml
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
AWSTemplateFormatVersion: '2010-09-09'
|
||||||
|
Description: IAM Role for CloudFormation Write operations via AssumeRole
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
AdminPrincipalArns:
|
||||||
|
Type: List<String>
|
||||||
|
Description: List of IAM Identity Center Role ARNs allowed to assume this role.
|
||||||
|
|
||||||
|
Resources:
|
||||||
|
CloudFormationWriteRole:
|
||||||
|
Type: AWS::IAM::Role
|
||||||
|
Properties:
|
||||||
|
RoleName: CloudFormationWriteRole
|
||||||
|
Description: Role for performing CloudFormation write operations. Intended to be assumed manually or by CI/CD, not attached to Permission Sets.
|
||||||
|
AssumeRolePolicyDocument:
|
||||||
|
Version: '2012-10-17'
|
||||||
|
Statement:
|
||||||
|
- Effect: Allow
|
||||||
|
Principal:
|
||||||
|
AWS: !Ref AdminPrincipalArns
|
||||||
|
Action: sts:AssumeRole
|
||||||
|
Policies:
|
||||||
|
- PolicyName: ECRImport
|
||||||
|
PolicyDocument:
|
||||||
|
Version: "2012-10-17"
|
||||||
|
Statement:
|
||||||
|
- Effect: Allow
|
||||||
|
Action:
|
||||||
|
- ecr:DescribeRepositories
|
||||||
|
- ecr:GetRepositoryPolicy
|
||||||
|
- ecr:DeleteRepositoryPolicy
|
||||||
|
- ecr:PutImageScanningConfiguration
|
||||||
|
Resource:
|
||||||
|
- !Sub arn:aws:ecr:${AWS::Region}:${AWS::AccountId}:repository/*
|
||||||
|
- PolicyName: RoleWrite
|
||||||
|
PolicyDocument:
|
||||||
|
Version: "2012-10-17"
|
||||||
|
Statement:
|
||||||
|
- Effect: Allow
|
||||||
|
Action:
|
||||||
|
- iam:PutRolePolicy
|
||||||
|
- iam:DeleteRolePolicy
|
||||||
|
Resource:
|
||||||
|
- !Sub arn:aws:iam::${AWS::AccountId}:role/*
|
||||||
|
- PolicyName: PolicyWrite
|
||||||
|
PolicyDocument:
|
||||||
|
Version: "2012-10-17"
|
||||||
|
Statement:
|
||||||
|
- Effect: Allow
|
||||||
|
Action:
|
||||||
|
- iam:CreatePolicyVersion
|
||||||
|
- iam:DeletePolicyVersion
|
||||||
|
Resource:
|
||||||
|
- !Sub arn:aws:iam::${AWS::AccountId}:policy/*
|
||||||
|
|
||||||
|
ManagedPolicyArns:
|
||||||
|
- arn:aws:iam::aws:policy/ReadOnlyAccess
|
||||||
|
- !Sub arn:aws:iam::${AWS::AccountId}:policy/CloudFormationWrite
|
||||||
Loading…
Add table
Add a link
Reference in a new issue