AWS IAM 실습 2

Chori·2024년 12월 3일
0
post-thumbnail

처음 시작하는 Infrastructure as Code: AWS & 테라폼을 수강하며 정리한 내용입니다.


IAM Role 생성

  • iam_role_hello.tf 파일을 생성하고 아래와 같이 작성
  • aws_iam_instance_profile은 IAM 역할을 위한 컨테이너로서 인스턴스 시작 시 EC2 인스턴스에 역할 정보를 전달
  • EC2에 Role을 할당하려면 인스턴스 프로파일이 필요
resource "aws_iam_role" "hello" {
  name = "hello-iam-role"
  path = "/"
  assume_role_policy = <<EOF
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "ec2.amazonaws.com"
        },
        "Action": "sts:AssumeRole"
      }
    ]
  }
  EOF
}

resource "aws_iam_instance_profile" "hello" {
  name = "hello-profile"
  role = aws_iam_role.hello.name
}
  • assume_role_policy는 이 Role이 사용자나 다른 AWS 서비스에서 사용될 수 있도록 허용하는 정책
    • 예제에서는 EC2 인스턴스가 이 Role을 사용할 수 있음
  • AWS 서비스 EC2에서 특정 액션을 행할 수 있는 권한을 넣어줌
  • terraform plan -parallelism=30terraform apply 명령어 실행
  • AWS 콘솔에서 새로운 Role이 생긴 것을 확인

  • Role의 신뢰 관계를 보면 테라폼 코드로 작성한 것과 같은 내용이 표시됨

Role에 Policy 추가

  • iam-role-hello.tf 파일에 Policy를 추가하고 role 인자로 Role에 연결
resource "aws_iam_role_policy" "hello_s3" {
  name = "hello-s3-download"
  role = aws_iam_role.hello.id
  policy = <<EOF
  {
    "Statement": [
      {
        "Sid": "AllowAppArtifactsReadAccess",
        "Action": [
          "s3:*"
        ],
        "Resource": [
          "*"
        ],
        "Effect": "Allow"
      }
    ]
  }
  EOF
}
  • AWS 콘솔에서 Role에 권한이 추가된 것을 확인할 수 있음


IAM Policy 생성

Policy 종류

  • AWS Managed Policy: AWS에서 먼저 생성해놓은 Policy set, 사용자가 권한을 변경할 수 없음
  • Customer Managed Policy: 사용자가 직접 생성하는 Policy로 권한을 직접 상세하게 만들어 관리할 수 있음
  • 모범 사례는 Customer Managed Policy를 만들어서 사용하는 것

권한 부여

  • user_gildong_hong.tf 파일에서 gildong.hong 사용자에게 권한 부여
resource "aws_iam_user_policy" "art_devops_black" {
  name = "super-admin"
  user = aws_iam_user.gildong_hong.name

  policy = <<EOF
  {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "*"
        ],
        "Resource": [
          "*"
        ]
      }
    ]
  }
  EOF
}
  • terraform plan, terraform apply 명령어 실행
  • AWS 콘솔에서 Policy가 생성되고 사용자에게 부여된 것을 확인


IAM Role 사용 사례

  • 액세스 키, 시크릿 키는 반드시 안전한 장소에서 사용해야 함
  • 액세스 키와 시크릿 키는 많은 곳에서 사용하거나 코드에 작성되면 안됨
  • 실제 서버에서는 EC2 서비스에 대해 허용하는 IAM Role을 할당하여 사용하는 것이 모범 사례
  • 적절한 AWS 서비스에 IAM Role을 할당하여 사용해야 함
profile
전부인 것처럼, 전부가 아닌 것처럼

0개의 댓글