Create CI user (AWS)

hyuckhoon.ko·2021년 1월 1일
0

What I learned in first year

목록 보기
30/146

terraform기반의 인프라를 자동화하는 pipeline을 구축하고 있다.
CI만을 위한 (최소한의 policy를 부여받은) AWS 유저를 생성해야 한다.


1. admin용 iam 유저로 로그인

최초 aws를 가입했을 때, 그 계정은 루트 유저다.
그리고 루트 유저는 사용하지 않는 것이 best practice다.

그러면 admin용 iam 유저는 무엇인가?
(== administrative user)

루트 유저(계정) 말고 새로운 유저를 생성후,
그 계정에 관리자 권한이 있는 policy를 부여했다.

그 이후에는 더 이상 루트 유저는 사용하지 않고 있다.



CI 유저를 만들 시간이다.

새로 적용할 정책(policy)는
아래와 같다.

1. policy 생성

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "TerraformRequiredPermissions",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ec2:*"
            ],
            "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"
            ]
        }
    ]
}






2. 유저 생성







2. gitlab 셋팅

AWS CI 유저는 생성 완료됐다.
gitlab에서 CI 작업이 진행될 때,
환경변수로 AWS CI 유저 정보가 필요하다.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
ECR_REPO


gitlab 프로젝트로 이동한다.
좌측 settings를 누르고,
아래 그림에선 안보이지만 좌측바 General 아래로 스크롤을 내리면
CI/CD 하위 탭이 다시 나온다.
그 탭을 클릭한다.

그리고 환경변수 3개를 추가하는 작업을 진행할 것이다.





AWS ECR에 생성해둔 레포지토리의 URI를 복사하여
gitlab settings -> CI/CD -> 환경변수에도 추가한다.



0개의 댓글