안녕하세요! 하씨가문의 영광입니다!
오늘도 계속해서 Terraform으로 AWS를 구축할때 쓰이는 리소스들에 대해서 알아볼텐데요!
한번 시작을 해볼까요~! 고고~!!
aws_iam_user
resource "aws_iam_user" "lb" {
name = "loadbalancer"
path = "/system/"
tags = {
tag-key = "tag-value"
}
}
resource "aws_iam_user" "lb" { } 블록내의 인수는 다음과 같습니다.
<필수>
name : 사용자의 이름입니다. 이름은 공백 없이 대문자와 소문자, 영숫자로 구성되어야 합니다.
다음 문자(= , . @ - _ )를 포함할 수도 있습니다. 사용자 이름은 대소문자로 구분되지 않습니다. 예를 들어, "TESTUSER"와 "testuser"라는 이름의 사용자를 모두 만들 수 없습니다.
<선택 사항>
path : 사용자를 생성할 경로입니다. 기본은 " / " 입니다.
permissions_boundary : 사용자의 권한 경계를 설정하는 데 사용되는 정책의 ARN입니다.
force_destroy : user를 폐기할 때 Terraform에서 관리하지 않는 IAM Access key, 로그인 프로필 또는 MFA 장치가 있더라도 폐기하십시오. force_destroy를 사용하지 않으면 Terraform 관리 액세스 키가 user 와 로그인 프로필은 삭제되지 않을것입니다.
tags : IAM 사용자에 대한 태그의 Key-Value 맵입니다. provider default_tags 구성 블록이 있는 경우, 일치하는 키를 가진 태그가 공급자 수준에서 정의된 태그를 덮어씁니다.
aws_iam_user_policy
resource "aws_iam_user_policy" "lb_ro" {
name = "test"
user = aws_iam_user.lb.name
# Terraform's "jsonencode" function converts a
# Terraform expression result to valid JSON syntax.
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
resource "aws_iam_user_policy" "lb_ro" { } 블록내의 인수는 다음과 같습니다.
<필수>
policy : 정책 문서입니다. 이게 이 리소스에서 제일 주요건인데요 이것은 JSON 형식의 문자열입니다. Terraform을 사용하여 AWS IAM 정책 문서를 구축하는 방법에 대한 자세한 내용은 AWS IAM 정책 문서 안내서를 참조하시면 됩니다.
user : 이 정책을 연결할 IAM user 입니다.
<선택 사항>
name : 정책의 이름입니다. 생략하면 Terraform은 임의의 고유한 이름을 할당합니다.
name_prefix : 지정된 접두사로 시작하는 고유한 이름을 만듭니다. name과 상충합니다.
aws_iam_user_policy_attachment
resource "aws_iam_user_policy_attachment" "test-attach" {
user = aws_iam_user.user.name
policy_arn = aws_iam_policy.policy.arn
}
resource "aws_iam_user_policy_attachment" "test-attch" { } 블록내의 인수는 다음과 같습니다.
<필수>
user : 정책을 적용해야 하는 사용자 입니다.
policy_arn : 적용하려는 정책의 ARN 입니다.
aws_iam_role
resource "aws_iam_role" "test_role" {
name = "test_role"
# Terraform's "jsonencode" function converts a
# Terraform expression result to valid JSON syntax.
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Sid = ""
Principal = {
Service = "ec2.amazonaws.com"
}
},
]
})
tags = {
tag-key = "tag-value"
}
}
resource "aws_iam_role" "test_role" { } 블록내의 인수는 다음과 같습니다.
<필수>
assume_role_policy : Entity가 역할을 맡을 수 있는 권한을 부여하는 정책입니다.
assume_role_policy는 표준 IAM 정책과 매우 유사하지만 약간 다르므로 aws_iam_policy 리소스를 사용할 수 없습니다. 그러나 aws_iam_policy document 데이터 소스는 사용할 수 있습니다.
<선택 사항>
description : 역할에 대한 설명입니다.
force_detach_policies : 역할을 제거하기 전에 역할에 있는 정책을 강제로 분리할지 여부입니다. 기본값은 false입니다.
inline_policy : IAM 역할과 연결된 독점 IAM 인라인 정책 세트를 정의하는 구성블록입니다. 블록이 구성되지 않은 경우 Terraform은 이 리소스의 인라인 정책을 관리하지 않습니다. 하나의 빈 블록(예: inline_policy {})을 구성하면 Terraform이 적용 시 대역 외 추가된 모든 인라인 정책을 제거합니다.
managed_policy_arns : IAM role에 연결할 독점 IAM 관리형 정책 ARN 집합입니다. 이 속성이 구성되지 않은 경우 Terraform은 이 리소스에 대한 정책 첨부를 무시합니다. 구성하면 Terraform은 관리형 정책을 연결하거나 분리하여 역할의 관리형 정책 연결을 이 세트와 정렬합니다. 빈 집합(예: managed_policy_arns = [ ])을 구성하면 Terraform이 모든 관리형 정책 첨부 파일을 제거합니다.
max_session_duration : 지정된 역할에 대해 설정하려는 최대 세션 기간(초) 입니다. 이 설정의 값을 지정하지 않으면 기본 최대값인 1시간이 적용됩니다. 이 설정은 1시간에서 12시간 사이의 값을 가질 수 있습니다.
name : role의 이름입니다. 생락하면 Terraform은 임의의 고유한 이름을 할당합니다.
name_prefix : 지정된 접두사로 시작하는 고유한 이름을 만듭니다. name과 상충합니다.
path : 역할의 경로입니다.
permissions_boundary : 역할에 대한 권한 경계를 설정하는 데 사용되는 정책의 ARN입니다.
tags : IAM 역할에 대한 태그의 Key-Value 맵입니다. Provider default_tags 구성 블록이 있는 상태로 구성된 경우 일치하는 키가 있는 태그가 제공자 수준에서 정의된 태그를 덮어씁니다.
aws_iam_role_policy
resource "aws_iam_role_policy" "test_policy" {
name = "test_policy"
role = aws_iam_role.test_role.id
# Terraform's "jsonencode" function converts a
# Terraform expression result to valid JSON syntax.
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
resource "aws_iam_role_policy" "test_policy" { } 블록내의 인수는 다음과 같습니다.
<필수>
policy : 인라인 정책 문서입니다. 이것은 JSON 형식의 문자열입니다. Terraform으로 IAM 정책 문서를 구축하는 방법에 대한 자세한 내용은 AWS IAM 정책 문서 안내서를 참조하시면 됩니다.
role : 정책에 연결할 IAM 역할의 이름입니다.
<선택 사항>
name : 역할 정책의 이름입니다. 생략하면 Terraform은 임의의 고유한 이름을 할당합니다.
name_prefix : 지정된 접두사로 시작하는 고유한 이름을 만듭니다. name과 상충합니다.
aws_iam_role_policy_attachment
resource "aws_iam_role_policy_attachment" "test-attach" {
role = aws_iam_role.role.name
policy_arn = aws_iam_policy.policy.arn
}
resource "aws_iam_role_policy_attachment" "test-attach" { } 블록내의 인수는 다음과 같습니다.
<필수>
role : 정책을 적용해야 하는 IAM 역할의 이름 입니다.
policy_arn : 적용하려는 정책의 ARN 입니다.
오늘은 IAM user 과 IAM role을 Terraform 상으로는 어떻게 구성하는지, 어떤 리소스가 사용되는지 한번 알아보았는데요!
이번내용도 많은 도움이 되셨기를 바라며!! 다음주에 만나뵐게요~!
'INFRA > Operation' 카테고리의 다른 글
Terraform 리소스의 개념 이해 - GCP 1편 (0) | 2022.10.29 |
---|---|
terraform 여러 버전 사용하기(2) 리눅스 (0) | 2022.10.28 |
Terraform 리소스의 개념 이해 - AWS 5편 (0) | 2022.10.17 |
쿠버네티스 이론 STEP14 Resource Management (0) | 2022.10.12 |
쿠버네티스 이론 STEP13 Scheduling 3 Cordon & Uncordon & Drain (0) | 2022.10.05 |
댓글