* 참조 사항
- 필자는 학습을 목적으로 main.tf에 전체 인프라 구축 코드를 작성하였으며, 이에 대해 각기 설명함
- .tf 파일을 resource 별로 분할할 시, 필자와 코드가 다를 수 있음
- Terraform 기초부터 순차적으로 보길 권장 (1번 게시물의 이해가 매우 중요)
1. Architecture Create : https://isc9511.tistory.com/163
2. Bucket 생성 및 파일 업로드 : https://isc9511.tistory.com/164
* IAM(Identity and Access Management) Role 및 Policy
- AWS에서 정책이 정말 세세하게 분할이 되어있는데, 어떤 행위를 수행하려면 적절한 권한(정책이 연결되어 있는)이 필수IAM을 정말 타이트하게 설정하려면 눈알을 포기해야함
- 부가적으로 어떤 엔터티에 사용할 Role인지 등 세세하게 설정이 필요(대부분의 정책이 생성이 되어있지만, JSON 형식으로 필요 권한만 Custom도 가능 / 단, 에러가 겁나 터지니 비추)
* Code 내용
- 아래는 EC2 인스턴스가 Bucket의 사용과 SSM(System Manager - Session Manager)를 기반으로 접속할 수 있도록 설정
- 인스턴스가 사용하는 IAM Role의 경우 Instance Profile로 EC2 생성 시, 별도 할당이 필요
- 아래 코드처럼 실제 Amazon 관리 콘솔 내에서도, Role 생성 시, 정책을 연결하거나 Custom 하게 생성한 정책을 연결
# IAM Role 생성
resource "aws_iam_role" "instance-profile" {
name = "instance-ssm-bucket-role"
# 생성할 IAM Role 이름
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Effect = "Allow",
Principal = {
Service = "ec2.amazonaws.com"
# IAM Role 생성 시, EC2 Profile 역할로 사용됨을 지정
}
Action = "sts:AssumeRole"
# AdministratorAccess 권한이 존재 하더라도, AssumeRole로 접근 필수적
}
]
})
tags = {
Name = "Instance SSM and Bucket Role"
# 생성한 IAM에 지정되는 Tag 이름
}
}
# 위에서 생성한 IAM Role에 필요 정책 부착
resource "aws_iam_role_policy_attachment" "attach-ssm-s3-policy" {
policy_arn = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore"
role = aws_iam_role.instance-profile.name
}
resource "aws_iam_role_policy_attachment" "attach-s3-policy" {
policy_arn = "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
role = aws_iam_role.instance-profile.name
}
Instance Profile로 EC2에 연결하는 Code는 추후 EC2를 생성하는 게시물에서 등장 예정
'AWS Cloud' 카테고리의 다른 글
[AWS - Terraform] RDS 구축 (Cluster 및 RDS Instance) (0) | 2023.03.29 |
---|---|
[AWS - Terraform] Network Setting (VPC, Subnet, IGW, NGW, Routing table, Security Group) (2) | 2023.03.28 |
[AWS - Terraform] Bucket 생성 및 파일 업로드 (0) | 2023.03.28 |
[AWS - Terraform] Architecture create (0) | 2023.03.28 |
[AWS] STS(Security Token Service) (0) | 2022.08.03 |