아래의 새로운 정책을 기존 CI 유저 정책에 반영한다.
앞에서 bastion EC2 인스턴스를 생성했다.
하지만 해당 서버를 접근하거나 업데이트하는 등의 역할은 부여하지 않았다.
하드웨어만 있다고 생각하면 된다.
따라서, 기존 생성한 CI 유저에
ec2 인스턴스에 관한 역할을 추가로 부여하는 과정이다.
예를 들어, 해당 bastion 인스턴스에서 AWS ECR에 도커 이미지를 푸시할 수 있는 것도 권한 및 역할과 관련이 있는 문제다.
"iam:CreateRole",
"iam:GetInstanceProfile",
"iam:DeletePolicy",
"iam:DetachRolePolicy",
"iam:GetRole",
"iam:AddRoleToInstanceProfile",
"iam:ListInstanceProfilesForRole",
"iam:ListAttachedRolePolicies",
"iam:DeleteRole",
"iam:TagRole",
"iam:PassRole",
"iam:GetPolicyVersion",
"iam:GetPolicy",
"iam:CreatePolicyVersion",
"iam:DeletePolicyVersion",
"iam:CreateInstanceProfile",
"iam:DeleteInstanceProfile",
"iam:ListPolicyVersions",
"iam:AttachRolePolicy",
"iam:CreatePolicy",
"iam:RemoveRoleFromInstanceProfile"
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "TerraformRequiredPermissions",
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ec2:*",
"rds:DeleteDBSubnetGroup",
"rds:CreateDBInstance",
"rds:CreateDBSubnetGroup",
"rds:DeleteDBInstance",
"rds:DescribeDBSubnetGroups",
"rds:DescribeDBInstances",
"rds:ListTagsForResource",
"rds:ModifyDBInstance",
"iam:CreateServiceLinkedRole",
"rds:AddTagsToResource",
"iam:CreateRole",
"iam:GetInstanceProfile",
"iam:DeletePolicy",
"iam:DetachRolePolicy",
"iam:GetRole",
"iam:AddRoleToInstanceProfile",
"iam:ListInstanceProfilesForRole",
"iam:ListAttachedRolePolicies",
"iam:DeleteRole",
"iam:TagRole",
"iam:PassRole",
"iam:GetPolicyVersion",
"iam:GetPolicy",
"iam:CreatePolicyVersion",
"iam:DeletePolicyVersion",
"iam:CreateInstanceProfile",
"iam:DeleteInstanceProfile",
"iam:ListPolicyVersions",
"iam:AttachRolePolicy",
"iam:CreatePolicy",
"iam:RemoveRoleFromInstanceProfile"
],
"Resource": "*"
},
{
"Sid": "AllowListS3StateBucket",
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::info-share-tfstate"
},
{
"Sid": "AllowS3StateBucketAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::info-share-tfstate/*"
},
{
"Sid": "LimitEC2Size",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": "arn:aws:ec2:*:*:instance/*",
"Condition": {
"ForAnyValue:StringNotLike": {
"ec2:InstanceType": [
"t2.micro"
]
}
}
},
{
"Sid": "AllowECRAccess",
"Effect": "Allow",
"Action": [
"ecr:*"
],
"Resource": "arn:aws:ecr:us-east-1:*:repository/recipe-app-api-devops"
},
{
"Sid": "AllowStateLockingAccess",
"Effect": "Allow",
"Action": [
"dynamodb:PutItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem"
],
"Resource": [
"arn:aws:dynamodb:*:*:table/info-share-tf-state-lock"
]
}
]
}
터미널에 아래와 같이 입력하자.
그리고 나온 결과값을 복사한다.
cat ~/.ssh/id_rsa.pub