본문 바로가기

AWS/IAM

[AWS/IAM] 권한과 정책

권한 부여, 정책

IAM의 액세스 관리를 통해 보안 주체 엔터티(IAM 엔터티를 사용하여 인증된 사람 또는 애플리케이션)에 허용된 권한을 정의 할 수 있습니다.  이러한 액세스 관리를 권한 부여라고 부릅니다.

관리자는 정책을 생성하고 IAM 자격 증명 또는 AWS 리소스에 연결하여 AWS에 대한 액세스를 관리합니다. 정책은 자격 증명이나 리소스에 연결 될 때 해당 권한을 정의하는 AWS 객체입니다. AWS는 IAM 엔터티(사용자 또는 역할)가 요청을 보낼 때 정책을 평가하고, 평가에 대한 결과로 요청을 허용하거나 거부합니다. 대부분의 정책은 JSON 문서로 저장됩니다.

사용자에 정책 연결

IAM 사용자는 서비스의 자격 증명입니다. IAM 사용자를 생성하는 경우, 권한을 부여하지 않는 한 AWS의 어느것도 액세스 할 수 없습니다. 사용자 또는 사용자가 속한 그룹에게 연결된 자격 증명 기반 정책을 생성하여 사용자에게 권한을 부여합니다. 다음은 IAM 사용자에 연결된 JSON 정책을 보여줍니다.

{
	"Version": "2021-01-12",
    "Statement": {
    	"Effect": "Allow",
        "Action": "dynamodb:*",
        "Resource:": "arn:aws:dynamodb:us-east-2:123456789012:table/Books"
    }
}

예시의 정책은 us-east-2 리전에 위치한 Amazon DynamoDB 리소스에 대해서 123456789012 계정의 Books 테이블에 대한 모든 작업을 허용하도록 정의하고 있습니다.

이러한 정책을 IAM 사용자에게 연결하면 해당 사용자의 요청을 AWS가 연결 정책에 의해 권한을 판단합니다. 이처럼 대부분의 사용자는 여러 개의 정책을 부여 받게 될 것입니다.

반면 명시적으로 이러한 정책을 부여받지 않은 사용자 요청은 작업 또는 리소스에서 AWS에 의해 거부됩니다. 예시의 정책에 따르면(다른 정책이 해당 사용자에게 연결되어 있지 않다는 가정 하에) 이 사용자는 Books 테이블에 대한 DynamoDB 작업만 수행 할 수 있으며, 다른 테이블에 대한 작업은 금지되어 있습니다. 마찬가지로 다른 AWS 리소스(EC2, S3 등)와 서비스의 어떠한 것도 수행 할 수 없습니다.

그룹에 정책 연결

IAM 사용자를 IAM 그룹 내에 편성하고 해당 그룹에 정책을 연결하는 방법도 있습니다. 이 경우 각 사용자는 별도의 자격 증명을 갖고 있지만, 그룹에 연결되어 있는 정책에 명시된 권한 역시 부여 받게 됩니다.

마찬가지로 하나의 그룹에도 여러 개의 정책을 연결하여 다양한 권한을 부여 할 수 있습니다. 이 경우 그룹 내 사용자가 갖는 권한은 각 정책(사용자와 그룹에 연결된)의 조합으로 계산됩니다. 또한 그룹 내 사용자 역시 명시적으로 부여되지 않은 작업과 리소스에 대한 액세스는 여전히 금지됩니다.

 

출처:https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/introduction_access-management.html

페더레이션 사용자(연동 사용자, Federated users)

페더레이션 사용자는 IAM 사용자와 달리 AWS 계정에서 영구적인 ID를 부여하지 않습니다. 페더레이션 사용자에게 권한을 부여하려면 역할이라고 하는 AWS 객체를 만들 수 있습니다. 페더레이션 사용자가 AWS에 로그인하면 역할과 연결되고 역할에 정의된 권한이 부여됩니다.

자격 증명 기반의 정책(Identity-based)

자격 증명 기반 정책은 IAM 사용자, 그룹 또는 역할과 같은 IAM 자격 증명에 연결 할 수 있는 정책입니다. 자격 증명이 수행 할 수 있는 작업과 조건을 제어합니다. 자격 증명 기반 정책에는 관리형 정책과 인라인 정책이 있습니다.

  • 관리형 정책
    사용자, 그룹 및 역할 다수에 연결 할 수 있습니다.
    • AWS 관리형 정책
      AWS에서 생성하고 관리하는 정책입니다.
    • 고객 관리형 정책
      사용자가 자신의 AWS 계정에서 생성하고 관리하는 정책입니다. AWS 관리형 정책보다 권한을 더욱 정밀하게 제어 할 수 있습니다. JSON 정책 문서를 생성하여 사용합니다.
  • 인라인 정책
    단일 사용자, 단일 그룹 또는 단일 역할에 단독으로 연결합니다

관리형 정책에는 AWS 관리형 정책과 고객 관리형 정책이 있습니다. 인라인 정책은 일반적인 경우라면 관리형 정책을 대신 사용하는 것을 권장하니다. 정책의 유형에 대해서는 다른 문서에서 추가로 기술하겠습니다.

리소스 기반의 정책(Resource-based)

리소스 기반 정책은 AWS S3 버킷과 같이 리소스에 연결하는 정책입니다. 보안 주체가 해당 리소스에서 수행 할 수 있는 작업과 조건을 제어합니다. 리소스 기반 정책은 인라인 정책이며, 관리형 정책은 없습니다.

AWS IAM 서비스는 IAM에서 신뢰 정책이라고 부르는 리소스 기반 정책 유형 하나만을 지원합니다. 이 정책 유형-신뢰 정책은 IAM 역할에 연결하여 사용합니다. 신뢰 정책은 역할을 수임할 수 있는 보안 주체 엔터티(계정, 사용자, 역할 및 페더레이션 사용자)를 정의합니다.