Terraform

[Terraform]테라폼으로 AWS IAM 생성하기

암낫어로봇 2024. 4. 25. 14:11
반응형

테라폼 전용 IAM 사용자 생성하기

IAM -> 사용자 -> 사용자 생성 클릭

 

사용자 이름 지정 -> 그룹에 사용자 추가 -> 사용자 생성

 

사용자 생성 완료된 상태에서 사용자 이름 클릭

 

보안 자격 증명 -> 액세스 키 만들기 -> CLI 선택

 

액세스 키 따로 기록해두기(나중에 다시 확인할 수 없음)

.csv 파일로 다운로드 받을 수 있으므로 다운받은 후 잘 보관해야 한다.

 

테라폼을 위해 생성한 IAM 사용자에게 권한 부여하기

앞서 생성한 IAM 사용자는 테라폼을 사용해 새로운 IAM 사용자를 생성하기 위한 용도이므로 새로운 사용자를 생성할 수 있는 권한을 미리 부여해주어야 한다.

 

직접 정책 연결 -> IAMFullAccess -> 권한 추가

 

권한 부여 완료


AWS CLI로 계정에 접근하기

  • `set AWS_PROFILE=iam-terraform` : AWS_PROFILE 환경 변수에 default 사용자의 이름을 지정해주는 명령
  • `aws configure` : AWS CLI에서 사용할 사용자를 등록하는 과정

 

AWS CLI 사용자 등록 확인하는 방법

cat ~/.aws/credentials

cat ~/.aws/config


Terrafom으로 사용자 및 그룹 생성하기

main.tf 파일에 provider, resource 작성

# main.tf

# aws provider 설정
provider "aws" {
  region = "ap-northeast-2"
}

# 개별 사용자와 그룹을 각각 생성
resource "aws_iam_user" "manager1" {
  name = "manager1"
  path = "/system/"
}

resource "aws_iam_group" "manager-group" {
  name = "manager"
  path = "/system/"
}

# 생성한 개별 사용자와 그룹을 연결해주는 코드(그룹에 사용자 등록)
resource "aws_iam_group_membership" "manager-membership" {
  name = "manager-membership"
  users = [ 
    aws_iam_user.manager1.name
   ]
   group = aws_iam_group.manager-group.name

}

# iam policy를 생성
resource "aws_iam_policy" "manager-policy" {
  name = "manager-policy"
  path = "/system/"
  description = "manager policy"

    policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
    {
    "Action": [
        "s3:ListAllMyBuckets"
    ],
    "Effect": "Allow",
    "Resource": "*"
    }
]
}
EOF
}

# 생성한 iam policy를 group에 연결
resource "aws_iam_group_policy_attachment" "manager-group-policy-attachment" {
  group = aws_iam_group.manager-group.name
  policy_arn = aws_iam_policy.manager-policy.arn
}

 

코드 작성 완료 후 설정 적용

`terraform init` -> `terraform plan` -> `terraform apply`

 

 

새로운 사용자 생성된 모습

 

새로운 그룹 생성된 모습

 

새로운 정책 생성된 모습

 

그룹 권한에 생성한 정책이 연결된 모습

 


참고 자료

인프런 - 실리콘밸리 엔지니어와 함께하는 테라폼(Terraform)

https://inf.run/DSSo

 

실리콘밸리 엔지니어와 함께하는 테라폼(Terraform) | 미쿡엔지니어 - 인프런

미쿡엔지니어 | "클라우드 인프라스트럭처 자동화(Infrastructure Automation)의 세계로 떠나보세요!" 인프라스트럭처 자동화 도구, 테라폼은 클라우드 환경에서 리소스를 프로비저닝(Provisioning)하고 관

www.inflearn.com

반응형