diff --git a/cfn/ESDK-Python.yml b/cfn/ESDK-Python.yml index 47965bfb3..7a605f8c8 100644 --- a/cfn/ESDK-Python.yml +++ b/cfn/ESDK-Python.yml @@ -174,6 +174,7 @@ Resources: - !Ref CodeBuildBatchPolicy - !Ref CodeBuildBasePolicy - !Ref SecretsManagerPolicy + - !Ref CodeBuildCISTSAllow CodeBuildCIServiceRole: Type: "AWS::IAM::Role" @@ -186,6 +187,7 @@ Resources: - !Ref CryptoToolsKMS - !Ref CodeBuildCIBatchPolicy - !Ref CodeBuildBasePolicy + - !Ref CodeBuildCISTSAllow CodeBuildBatchPolicy: Type: "AWS::IAM::ManagedPolicy" @@ -339,3 +341,20 @@ Resources: } ] } + + CodeBuildCISTSAllow: + Type: "AWS::IAM::ManagedPolicy" + Properties: + ManagedPolicyName: !Sub CodeBuildCISTSAllow-${ProjectName} + Path: /service-role/ + PolicyDocument: | + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": "sts:AssumeRole", + "Resource": "arn:aws:iam::370957321024:role/GitHub-CI-Public-ESDK-Python-Role-us-west-2" + } + ] + } diff --git a/cfn/Public-ESDK-Python-CI.yml b/cfn/Public-ESDK-Python-CI.yml new file mode 100644 index 000000000..6d40b8274 --- /dev/null +++ b/cfn/Public-ESDK-Python-CI.yml @@ -0,0 +1,59 @@ +AWSTemplateFormatVersion: "2010-09-09" +Description: "IAM Managed Policies/Role for AWS KMS Hierarchical Keyring Testing" + +Parameters: + ProjectName: + Type: String + Description: A prefix that will be applied to any resource names + Default: Public-ESDK-Python + GitHubRepo: + Type: String + Description: GitHub Repo that invokes CI + Default: aws/aws-encryption-sdk-python + +Resources: + GitHubCIRole: + Type: 'AWS::IAM::Role' + Properties: + RoleName: !Sub "GitHub-CI-${ProjectName}-Role-${AWS::Region}" + Description: "Access DDB, KMS, Resources for CI from GitHub" + ManagedPolicyArns: + - "arn:aws:iam::370957321024:policy/ESDK-Dafny-DDB-ReadWriteDelete-us-west-2" + - "arn:aws:iam::370957321024:policy/Hierarchical-GitHub-KMS-Key-Policy" + - "arn:aws:iam::370957321024:policy/KMS-Public-CMK-EncryptDecrypt-Key-Access" + - "arn:aws:iam::370957321024:policy/RSA-GitHub-KMS-Key-Policy" + AssumeRolePolicyDocument: !Sub | + { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { "Federated": "arn:aws:iam::${AWS::AccountId}:oidc-provider/token.actions.githubusercontent.com" }, + "Action": "sts:AssumeRoleWithWebIdentity", + "Condition": { + "StringEquals": { + "token.actions.githubusercontent.com:aud": "sts.amazonaws.com" + }, + "StringLike": { + "token.actions.githubusercontent.com:sub": "repo:${GitHubRepo}:*" + } + } + }, + { + "Effect": "Allow", + "Principal": { + "AWS": "*" + }, + "Action": "sts:AssumeRole", + "Condition": { + "StringEquals": { + "aws:PrincipalArn": [ + "arn:aws:iam::587316601012:role/service-role/codebuild-python-esdk-CI-service-role", + "arn:aws:iam::587316601012:role/service-role/codebuild-python-esdk-service-role", + "arn:aws:iam::${AWS::AccountId}:role/ToolsDevelopment" + ] + } + } + } + ] + } \ No newline at end of file