AWS IAM Role&Policy

박도준·2021년 5월 20일
0

[IaC] Terraform

목록 보기
8/9
post-thumbnail

AWS IAM Role과 Policy를 생성해본다.



테라폼으로 IAM Role 생성

  • iam_role.tf
resource "aws_iam_role" "test-role" {
 name = "test-role"
 path = "/"
 assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
EOF
}

IAM Role을 생성할 때는 aws_iam_role 리소스를 사용하고, 필수 요소는 name이다.

내부를 살펴보면 role의 이름은 "test-role"이고 assume_role_policy 는 마지막줄에 EOF까지의 내용을 포함한다.

Statement 내부를 살펴보면 SidStatement의 고유 이름을 나타낸다.

그리고 "ec2.amazonaws.com" Service에서 "sts:AssumeRole"의 Action을 "Allow"한다.

terraform plan

terraform apply


생성한 role에는 아직 권한이 없는 상태이다.

권한을 추가해본다.



테라폼으로 IAM Role Policy 생성

기존의 iam_role.tf에 아래 내용을 추가한다.

  • iam_role.tf
resource "aws_iam_role_policy" "test_s3_policy" {
  name   = "test-s3-policy"
  role   = aws_iam_role.test-role.id
  policy = <<EOF
{ 
  "Statement": [
    { 
      "Sid": "AllowAppArtifactsReadAccess",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    }
  ]
}
EOF

}

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

IAM role Policy를 생성할 때는 aws_iam_role_policy 리소스르 이용한다. 이때 rolepolicy는 필수 요소로, role에는 policy를 attach할 IAM role을 적고 policy에는 IAM inline policy를 적어준다.

aws_iam_instance_profileIAM 역할을 위한 컨테이너로서 인스턴스 시작 시 EC2 인스턴스에 역할 정보를 전달하는데 사용된다. 만약 AWS Management 콘솔을 사용하여 EC2를 생성하는 경우, 콘솔이 자동으로 인스턴스 프로파일을 생성하여 해당 역할과 동일한 이름을 부여한다.

terraform plan

terraform apply



테라폼으로 IAM User Policy 생성

앞서 user를 생성한 tf 파일에 IAM User Policy를 추가한다.

  • user_dojun.tf
resource "aws_iam_user" "dojun"{
 name = "dojun"
}

resource "aws_iam_user_policy" "dojun_policy" {
  name  = "dojun_policy"
  user  = aws_iam_user.dojun.name

  policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "*"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

IAM User Policy를 생성할 때는 ws_iam_user_policy를 사용하고, userpolicy는 필수요소이다.

user에는 policy를 연결할 IAM user를 적고, policy에는 연결할 정책을 적는다.

terraform plan

terraform apply

profile
Better late than never

0개의 댓글