Terraform을 사용하여 AWS에서 IAM 역할을 생성하는 방법
이 페이지에서
- 전제 조건
- 우리가 할 일\n
- IAM 역할에 대한 Terraform 구성 파일 작성\n
- Terraform 구성 파일을 사용하여 IAM 역할 생성\n
- Terraform을 사용하여 생성된 IAM 역할 삭제\n
- 결론
이 기사에서는 IAM 역할을 생성하는 방법을 살펴봅니다. 계속 진행하기 전에 귀하가 Terraform 및 AWS IAM 역할의 기본 사항에 익숙하다고 가정합니다. IAM 역할에 대해 자세히 알아보려면 여기를 클릭하십시오. 이 도움말에서는 역할을 만들고 관리자 권한을 할당합니다.
전제 조건
- Terraform에 대한 기본적인 이해.\n
- 시스템에 Terraform이 설치되어 있습니다.
- AWS 계정(계정이 없는 경우 생성).
- AWS IAM 사용자의 access_key 및 secret_key. (AWS에서 access_key 및 secret_key를 사용하여 IAM 사용자를 생성하는 방법을 알아보려면 여기를 클릭하십시오.)\n
우리가 할 일
- IAM 역할을 생성하기 위한 Terraform 구성 파일을 작성합니다.\n
- Terraform 구성 파일을 사용하여 IAM 역할을 만듭니다.\n
- Terraform을 사용하여 생성된 IAM 역할을 삭제합니다.\n
IAM 역할에 대한 Terraform 구성 파일 작성
terraform 구성 파일을 만들 수 있는 전용 디렉터리를 만듭니다.
다음 명령을 사용하여 디렉토리를 만들고 현재 작업 디렉토리를 변경하십시오.
저는 "vim"을 편집기로 사용하여 파일을 작성하고 있습니다. 원하는 편집기를 사용하고 다음 구성을 복사하여 붙여넣어 variables.tf, terraform.tfvars 및 main.tf를 만들 수 있습니다.
AWS에서 IAM 역할 생성을 담당하는 main.tf를 생성합니다. 이 main.tf는 variables.tf 및 terraform.tfvars에서 변수 값을 읽습니다.
provider "aws" { region = "${var.region}" access_key = "${var.access_key}" secret_key = "${var.secret_key}" } data "aws_iam_policy_document" "cross_account_assume_role_policy" { statement { effect = "Allow" principals { type = "AWS" identifiers = var.principal_arns } actions = ["sts:AssumeRole"] } } resource "aws_iam_role" "cross_account_assume_role" { name = var.name assume_role_policy = data.aws_iam_policy_document.cross_account_assume_role_policy.json } resource "aws_iam_role_policy_attachment" "cross_account_assume_role" { count = length(var.policy_arns) role = aws_iam_role.cross_account_assume_role.name policy_arn = element(var.policy_arns, count.index) }
위 구성에서 사용된 인수의 의미:
- assume_role_policy - (필수) 엔티티에 역할을 수임할 수 있는 권한을 부여하는 정책입니다.\n
- policy_arn (필수) - 적용하려는 정책의 ARN입니다.\n
변수의 선언 및 정의를 포함하는 variables.tf를 생성합니다.
여기,
"principal_arns" 변수는 이 역할을 사용하도록 허용되는 AWS 계정 번호를 보유합니다. 여기에 계정 번호 목록을 전달할 수도 있습니다.
"policy_arns" 변수는 생성할 역할에 연결해야 하는 정책의 ARN을 보유합니다. 여기에서 정책 ARN 목록을 전달할 수도 있습니다.
variable "access_key" { description = "Access key to AWS console" } variable "secret_key" { description = "Secret key to AWS console" } variable "region" { description = "Region of AWS VPC" } variable "name" { default = "myrole" type = "string" description = "The name of the role. " } variable "principal_arns" { default = ["123456789012"] type = list(string) description = "ARNs of accounts, groups, or users with the ability to assume this role." } variable "policy_arns" { default = ["arn:aws:iam::aws:policy/AdministratorAccess"] type = list(string) description = "List of ARNs of policies to be associated with the created IAM role" }
variables.tf를 생성했으면 변수에 할당된 값을 변경하는 것을 잊지 마십시오. 강조표시된 값은 내 환경에만 해당하므로 변경해야 합니다. 나머지 변수는 그대로 유지할 수 있습니다. 생성 중인 역할에 관리자 액세스 권한을 할당하지 않으려면 선택한 정책의 정책 ARN을 정의하여 변경할 수 있습니다.
위 파일에 정의된 access_key 및 secret_key 변수의 정의를 포함하는 terraform.tfvars를 생성합니다. 우리는 region과 함께 terraform.tfvars 파일에 이 두 변수의 선언을 보관했습니다.
IAM 역할을 생성하기 위해 특정 지역이 특별히 필요하지 않습니다. 이 지역 변수를 이해하고 다른 리소스 생성 파일에서 사용할 수 있도록 이 변수를 여기에 보관했습니다.
IAM 사용자의 키로 다음 키를 변경해야 합니다. 이러한 키를 지정하기 전에 AWS 콘솔에서 생성해야 하며 이 키를 누구와도 공유하지 마십시오.
region = "eu-west-3" access_key = "AKIAQ6GAIA5XFLXF6HOV" secret_key = "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"
이제 3개의 파일 즉, variables.tf, terraform.tfvars 및 main.tf가 있어야 합니다.
Terraform 구성 파일을 사용하여 IAM 역할 생성
다음 명령을 실행하기 전에 유효한 access_key 및 secret_key를 구성했는지 확인하십시오.
사용할 첫 번째 명령어는 terraform init입니다. 이 명령은 구성 내에서 사용되는 공급자에 대한 플러그인을 다운로드하고 설치합니다. 우리의 경우 AWS입니다.
두 번째로 사용할 명령은 terraform plan입니다. 이 명령은 인프라에서 발생할 변경 사항을 확인하는 데 사용됩니다.
terraform apply 명령은 main.tf 파일에 언급된 AWS에 리소스를 생성합니다. 리소스를 생성하기 위한 입력을 제공하라는 메시지가 표시됩니다.
위 명령어를 실행하면 성공적으로 완료되면 새 리소스가 추가되고 0이 소멸된 것을 확인할 수 있습니다.
역할 아래의 AWS IAM 콘솔로 이동하여 IAM 역할이 생성되었는지 확인할 수 있습니다.
Terraform을 사용하여 생성된 IAM 역할 삭제
main.tf 파일에 언급된 구성을 사용하여 생성한 리소스가 더 이상 필요하지 않은 경우 "terraform destroy" 명령을 사용하여 해당 리소스를 모두 삭제할 수 있습니다.
결론
이 기사에서는 관리자 권한으로 IAM 역할을 생성하는 단계를 살펴보았습니다. 또한 단 하나의 명령으로 IAM 역할을 삭제할 수 있는 방법도 확인했습니다.