AWS IAM 정책 구조 설명

AWS IAM(Identity and Access Management)

IAM 은 AWS 리소스에 대한 액세스를 안전하게 관라하기위한 서비스이다.

  • AWS 계정 내에서 다른 사용자와 그룹을 만들고, 제한을 할당하거나 제한할 수 있다.
  • 누가 어떤 AWS 리소스에 액세스할 수 있는지를 제어할 수 있다.
    • 이를 통해 데이터 유출이나 해킹등의 보안 위협으로부터 AWS 리소스를 보호할 수 있다.

ex) IAM을 사용하여 특정 사용자에게 EC2 인스턴스를 생성하고 관리할 수 있는 권한을 부여할 수 있다.

IAM 은 최소 권한의 원칙을 적용한다

  • 사용자가 필요이상으로 권한을주면 비용과 보안 문제가 발생하게떄

IAM 정책 구조

  • AWS IAM에서 사용하는 정책문서는 JSON 형식으로 작성된다. 이 문서는 AWS 서비스 및 리소스에 대한 권한을 정의하는 규칙들을 나타낸다.
{
  "Version": "2012-10-17",
	"Id": "S3-Account-Permissions",
  "Statement": [
    {
			"sid" : "1",
      "Effect": "Allow",
			"Principal": ""
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::example-bucket",
        "arn:aws:s3:::example-bucket/*"
      ],
		"Principal": {
        "AWS": "arn:aws:iam::123456789012:user/example-user"
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:PutItem",
        "dynamodb:GetItem",
        "dynamodb:DeleteItem"
      ],
      "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/example-table"
    },
    {
      "Effect": "Deny",
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::example-bucket",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}

Consist of

version

  • JSON 형식의 정책 문서 버전을 나타내는 필드
  • AWS에서는 2012년 10월 17일에 정책 문서 버전 1 출시
  • 2012-10-17은 현재 사용 가능한 가장 최신버전이다.

Id

  • 정책을 식별하는 ID이며 선택사항이다.

Statement[]

  • 정책에 포함된 구문들의 배열

Sid(Statement Id)

  • Statement를 식별할때 사용하며 선택사항이다.
  • Sid 예제
  • { "Version": "2012-10-17", "Statement": [ { "Sid": "1", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::example-bucket/*" }, { "Sid": "2", "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem" ], "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/example-table" } ] } //Sid 1 == 첫번째 State먼트를 식별하는데 사용되는 ID //Sid 2 == 첫번째 State먼트를 식별하는데 사용되는 ID

Effect

  • 구문이 특정 API에 접근하는 걸 혀용할지 거부할지에대한 내용이다.
  • 표시가 “Allow”이면 허용 “Deny”면 거부

Principal

  • AWS계정, IAM 사용자, 역할, AWS 서비스 등 , 권한 부여를 받을 수 있는 대상을 의미한다.
{
  "Version": "2012-10-17",Q
  "Statement": [
    {
      "Sid": "1",
      "Effect": "Allow",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::example-bucket/*",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:user/example-user"
      }
    }
  ]
}
  • 위 예시의 Principal은 IAM 사용자 example-user에게 s3:PutObject 작업을 수행할 수 있는 권한을 부여 한다는 의미이다.

Action

  • AWS 리소스에 대해 수행할 수 있는 작업을 나타낸다.
  • 단일 작업 또는 여러 작업을 배열 형태로 지정해줄 수 있다.
"Action": [
    "s3:PutObject",
    "s3:GetObject",
    "ec2:StartInstance"
]
  • 위의 예시에서는 S3 버킷 내 객체 업로드 및 다운로드, EC2 인스턴스 시작에 대한 권한을 부여하는 것이다.
  • 이렇게 "Action" 필드를 사용하여 IAM 정책 문서에서 허용 또는 거부할 작업들을 명시함으로써, 보안상 필요한 권한만 부여하고, 불필요한 권한을 막아서 AWS 리소스에 대한 보안을 유지할 수 있다.

Resource

  • 작업이(Action) 수행될 수 있는 AWS 리소스를 지정한다.
  • AWS 리소스는 AWS 계정 내의 모든 객체, 데이터, 서비스 등을 포함하며, 리소스 식별자는 각 리소스마다 고유한 Amazon Resource Name(ARN)으로 식별된다.

Condition

  • IAM 정책 문서에서 특정 작업이 수행될 때 필요한 추가적인 조건을 정의하는데 사용된다.

'cloud > AWS Cloud' 카테고리의 다른 글

AWS EC2 인스턴스 구매 옵션 정리  (0) 2023.04.14