Terraform을 사용한 EFS 사용 설정
provider "aws" {
region = "ap-northeast-2"
}
# EFS 파일 시스템 생성
resource "aws_efs_file_system" "efs" {
encrypted = true # 파일 시스템 암호화 옵션
lifecycle_policy {
transition_to_ia = "AFTER_30_DAYS" # 인액티브 파일들을 Infrequent Access로 이동
}
tags = {
Name = "MyEFS"
}
}
# EFS 마운트 타겟 생성 (EC2에서 접근할 수 있도록)
resource "aws_efs_mount_target" "efs_mount" {
count = length(var.subnet_ids)
file_system_id = aws_efs_file_system.efs.id
subnet_id = var.subnet_ids[count.index]
security_groups = [aws_security_group.efs_sg.id]
}
# EFS에 접근할 수 있는 Security Group
resource "aws_security_group" "efs_sg" {
name = "efs_sg"
description = "Allow EC2 and Lambda to access EFS"
vpc_id = var.vpc_id
ingress {
from_port = 2049
to_port = 2049
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"] # 보안 이유로 더 제한적인 범위로 설정 필요
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
# EC2 인스턴스에 EFS 마운트 (user_data로 EC2에 연결)
resource "aws_instance" "ec2" {
ami = "ami-12345678"
instance_type = "t2.micro"
subnet_id = var.subnet_id
security_groups = [aws_security_group.ec2_sg.id]
user_data = <<-EOF
#!/bin/bash
yum install -y amazon-efs-utils
mkdir /mnt/efs
mount -t efs ${aws_efs_file_system.efs.id}:/ /mnt/efs
EOF
tags = {
Name = "EC2WithEFS"
}
}
# Lambda 함수에 EFS 연결
resource "aws_lambda_function" "lambda" {
filename = "lambda_function.zip"
function_name = "my_lambda"
role = aws_iam_role.lambda_exec.arn
handler = "index.handler"
runtime = "nodejs14.x"
# Lambda에서 EFS에 접근할 수 있는 설정
file_system_config {
arn = aws_efs_access_point.my_access_point.arn
local_mount_path = "/mnt/efs"
}
}
resource "aws_efs_access_point" "my_access_point" {
file_system_id = aws_efs_file_system.efs.id
posix_user {
uid = 1000
gid = 1000
}
root_directory {
path = "/"
creation_info {
owner_gid = 1000
owner_uid = 1000
permissions = 755
}
}
}
EFS 암호화에 대한 설명
- 암호화를 하지 않는 경우: 파일을 저장하거나 전송할 때 암호화되지 않습니다. 따라서 데이터가 전송 중에 가로채거나 도난될 경우, 보안 위험
- 암호화를 하는 경우: AWS에서 제공하는 관리형 키 (KMS)로 데이터를 암호화. 데이터가 저장되거나 전송되는 동안 자동으로 암호화되며, 별도의 작업 없이 보안이 강화
암호화된 파일의 처리
- EFS의 암호화는 AWS에서 관리하는 방식으로, 사용자가 직접 파일을 복호화할 필요가 없다. 즉, 암호화를 설정하면 Lambda나 EC2에서 EFS에 접근할 때 자동으로 복호화된 데이터 사용
- 따라서 사용자가 직접 암호를 풀어야 할 필요는 없다. AWS가 자동으로 데이터를 암호화 및 복호화
결론적으로, EFS 암호화는 추가적인 보안 계층을 제공하면서도 Lambda나 EC2에서는 투명하게 데이터를 읽고 쓰기 가능
'AWS' 카테고리의 다른 글
AWS security_groups 멀티 지정 (0) | 2024.10.23 |
---|---|
AWS Aurora Serverless DB 생성, Lambda로 이벤트 전송 IaC (0) | 2024.10.23 |
AWS DirectConnect와 Transit G/W 연결해서 내부 통신 IaC (0) | 2024.10.22 |
AWS S3와 CloudFront 연동 IaC (0) | 2024.10.22 |
AWS EFS 리소스 (1) | 2024.10.22 |