ssm 접근
을 할 수 있도록 역할을 부여하려 합니다.ssm
을 사용할 수 있도록 하려면 ssm:StartSession
권한을 가진 정책을 생성하고, 역할에 연결한 뒤, 역할을 사용자에게 부여해야 합니다.테라폼 파일은 총 5개입니다.
variables.tf
: 테라폼 코드에서 사용될 변수에 대한 정보가 들어있습니다.provider.tf
: provider에 대한 정보들이 포함되어 있습니다. 예를 들어, 어떤 provider를 이용할 것인지, 리전은 어느 곳인지, 프로파일은 어떤 걸 사용할 것인지 등의 정보가 들어있습니다.role.tf
: 역할 생성 및 정책 연결 코드.policy.tf
: 정책 생성 코드.output.tf
: 어떤 값들을 출력할 것인가.var.profile
에 대한 정보는 variables.tf
에 들어있습니다.
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = "4.17.1"
}
}
}
provider "aws" {
profile = var.profile
region = "ap-northeast-2"
}
신뢰 관계
에 CLI 환경에서의 접근에 대한 정책을 적어줍니다.aws_iam_role_policy_attachment
)# ssm start-session-role
resource "aws_iam_role" "test" {
name = "test-tf-ssm-start-session-role"
path = "/"
assume_role_policy = jsonencode(
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowDevUserAssumeRole",
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::797587922006:user/khyup0629@hongikit.com"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:RoleSessionName": "$${aws:username}-cli"
},
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
}
)
}
resource "aws_iam_role_policy_attachment" "test" {
role = aws_iam_role.test.name
policy_arn = aws_iam_policy.test.arn
}
ssm:StartSession
권한을 가진 정책을 생성합니다.# ssm start-session policy
resource "aws_iam_policy" "test" {
name = "test-tf-ssm-start-session"
path = "/"
description = "(test)create ssm-start-session policy with terraform"
policy = jsonencode({
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "ssm:StartSession",
"Resource": "*"
}
]
})
}
# 생성한 역할의 arn 출력
output "role_arn" {
value = aws_iam_role.test.arn
}
IAM 역할
페이지를 보면 테라폼 코드로 생성한 역할이 존재하는 것을 볼 수 있습니다.
권한
탭을 보면 정책이 하나 연결
되어 있는 것이 보입니다.
해당 정책을 클릭해 보면 ssm:StartSession
권한을 가진 것을 볼 수 있습니다.