AWS IAM(Identity and Access Management)는 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹서비스이다.
IAM을 사용하여 AWS 기본 접근 및 리소스를 사용하도록 권한을 부여할 수 있다.
IAM User : AWS IAM User는 AWS 내에서 생성하는 사용자로 AWS와 상호작용하는 사용자 혹은 어플리케이션을 뜻한다.
IAM Group : AWS IAM Groupdms IAM User의 집합이고, Group을 사용함으로써 다수 사용자에 대하여 동일한 권한을 보다 쉽게 관리할 수 있다.
IAM Role : AWS IAM Role은 특정 권한을 가진 IAM 자격 증명이다. 이 Role을 사용함으로써 특정 사용자, 어플리케이션 그리고 AWS 서비스에 접근 권한을 위임할 수 있다.
IAM Policy : AWS의 접근하는 해당 권한을 정의하는 개체로 AWS IAM 리소스들과 연결하여 사용할 수 있다.
테라폼으로 IAM user를 생성해본다.
provider "aws"{
region = "ap-northeast-2"
}
resource "aws_iam_user" "dojun"{
name = "dojun"
}
IAM은 리전 종속적인 서비스가 아닌 글로벌 리소스이므로 어떤 region을 적어도 같은 리소스를 의미한다.
IAM User를 생성할 때는 aws_iam_user
리소스를 사용하고, 필수 요소는 name
이다.
terraform init
terraform plan
terraform apply
이렇게 테라폼 코드를 통해 IAM User가 생성된 것을 확인할 수 있다. 하지만 생성한 user는 console에 접속할 수 없는데, 이는 생성한 user의 비밀번호를 설정하지 않았기 때문이다.
비밀번호와 MFA는 직접 console 혹은 AWS CLI를 통해 설정할 수 있다. 물론 테라폼을 통해 aws_iam_user_login_profile
를 사용하면 설정이 가능하다.
테라폼을 통해 IAM group을 생성해본다.
resource "aws_iam_group" "devops_group"{
name = "devops"
}
IAM group을 생성할 때는 aws_iam_group
리소스를 사용하고, 필수 요소는 name
이다.
terraform plan
terraform apply
테라폼으로 생성한 IAM group에 IAM user를 등록해본다.
resource "aws_iam_group" "devops_group"{
name = "devops"
}
resource "aws_iam_group_membership" "devops" {
name = aws_iam_group.devops_group.name
users = [
aws_iam_user.dojun.name
]
group = aws_iam_group.devops_group.name
}
IAM user를 group에 등록하기 위해서는 aws_iam_group_membership
리소스를 사용한다.
aws_iam_group_membership
리소스에는 3가지 필요 요소가 있다.
name
- Group Membership을 식별하기 위한 이름users
- Group에 등록할 IAM user namegroup
- users 목록을 첨부할 IAM 그룹 이름terraform plan
terraform apply