[Terraform] IAM role

2023. 5. 6. 17:24Terraform

# hello_iam_role.tf
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_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

}

resource "aws_iam_instance_profile" "hello" {
  name = "hello-profile"
  role = aws_iam_role.hello.name
}

 

customer policy 를 정해서 하는게 타이트한 권한 정책을 정할 수있다.

코드에서 user 할당을 안하면 관리가 어렵다. 

 

엑세스키나 시크릿키는 코드나, config 파일에 어느곳에서도 박히면 안된다.

iam role 을 할당하는게 best practices 다.

 

# s3 보이는지 확인
aws s3 ls

# 엑세스키, 시크릿키 확인
cat ~/.aws/credentials

# 엑세스키 , 시크릿키 삭제
rm -rf ~/.aws/credentials

 

엑세스키, 시크릿키 지우고 나서 확인하면, 아래처럼 권한이 없다고 뜬다.

 

 

그래서  s3에 접근가능한 iam role 을 ec2 에 부여해보고 테스트 해보자 

아래는 ec2 > 인스턴스 > 해당 인스턴스 우측 클릭 >

보안 > iam 역할 수정

아래처럼 iam role 을 할당하고 "I AM 역할 업데이트"를 누른다.

그럼 이제 아래처럼 s3가 잘보인다! 

 

'Terraform' 카테고리의 다른 글

[Terraform] variable  (0) 2023.05.06
aws S3  (0) 2023.05.06
Terraform 기본  (0) 2023.05.03