단일 계정 내 요청에 대한 정책 평가 - AWS Identity and Access Management

단일 계정 내 요청에 대한 정책 평가

AWS는 요청 콘텍스트에 적용되는 정책 유형에 따라 정책을 평가합니다. 빈도순으로 나열된 다음 정책 유형을 단일 AWS 계정 내에서 사용할 수 있습니다. 이러한 정책 유형에 대한 자세한 정보는 AWS Identity and Access Management의 정책 및 권한 섹션을 참조하세요. AWS에서 크로스 계정 액세스에 대한 정책을 평가하는 방법에 대한 자세한 내용은 교차 계정 정책 평가 로직 섹션을 참조하세요.

  • 자격 증명 기반 정책 - 자격 증명 기반 정책은 IAM 자격 증명(사용자, 사용자 그룹 또는 역할)에 연결되어 IAM 엔터티(사용자 및 역할)에 권한을 부여합니다. 자격 증명 기반 정책만 요청에 적용되는 경우 AWS에서는 하나 이상의 Allow에 대해 이러한 정책을 모두 확인합니다.

  • 리소스 기반 정책 - 리소스 기반 정책은 정책에 지정된 위탁자에게 권한을 부여합니다. 권한은 보안 주체가 정책이 연결된 리소스를 사용하여 수행할 수 있는 작업을 정의합니다.

  • IAM 권한 경계 - 권한 경계는 ID 기반 정책을 통해 IAM 엔터티(사용자 또는 역할)에 부여할 수 있는 최대 권한을 설정하는 기능입니다. 엔터티에 대한 권한 경계를 설정할 경우 해당 엔터티는 ID 기반 정책 및 관련 권한 경계 모두에서 허용되는 작업만 수행할 수 있습니다. 경우에 따라, 권한 경계의 암시적 거부는 리소스 기반 정책에서 부여한 권한을 제한할 수 있습니다. 자세한 내용은 AWS 적용 코드 로직이 액세스 허용 또는 거부 요청을 평가하는 방법을 참조하십시오.

  • AWS Organizations 서비스 제어 정책(SCP) - 조직 SCP는 조직 또는 조직 단위(OU)의 계정 내에서 위탁자가 사용할 수 있는 최대 권한을 지정합니다. SCP는 각 AWS 계정 루트 사용자을 포함하여 멤버 계정의 위탁자에게 적용됩니다. SCP가 있는 경우 ID 기반 및 리소스 기반 정책에 의해 멤버 계정의 위탁자에게 부여된 권한은 SCP가 해당 작업을 허용하는 경우에만 유효합니다. 유일한 예외는 조직 관리 계정과 서비스 연결 역할의 위탁자입니다.

  • AWS Organizations 리소스 제어 정책(RCP)- 조직 RCP는 조직 또는 조직 단위(OU)의 계정 내에서 리소스에 대해 사용 가능한 최대 권한을 지정합니다. RCP는 회원 계정의 리소스에 적용되며, 위탁자가 조직에 속해 있는지 여부와 관계없이 AWS 계정 루트 사용자를 포함한 위탁자의 효과적인 권한에 영향을 줍니다. RCP는 조직 관리 계정의 리소스와 서비스 연결 역할에서 수행된 직접 호출에는 적용되지 않습니다.

  • 세션 정책 - 세션 정책은 역할 또는 페더레이션 사용자에 대해 임시 세션을 프로그래밍 방식으로 생성할 때 파라미터로 전달하는 정책입니다. 역할 세션을 프로그래밍 방식으로 생성하려면 AssumeRole* API 작업 중 하나를 사용합니다. 이를 수행하고 세션 정책을 전달할 때 결과적으로 얻는 세션의 권한은 IAM 엔터티의 자격 증명 기반 정책의 교차와 세션 정책입니다. 페더레이션 사용자 세션을 생성하려면 IAM 사용자 액세스 키를 사용하여 GetFederationToken API 작업을 프로그래밍 방식으로 호출합니다. 자세한 내용은 세션 정책 단원을 참조하십시오.

이러한 정책 중 하나에 포함된 명시적 거부는 허용을 재정의함을 명심하세요.

리소스 기반 정책과 함께 자격 증명 기반 정책 평가

자격 증명 기반 정책 및 리소스 기반 정책은 연결된 자격 증명이나 리소스에 권한을 부여합니다. IAM 엔터티(사용자 또는 역할)가 동일 계정 내에서 리소스에 대한 액세스를 요청할 경우 AWS는 자격 증명 기반 및 리소스 기반 정책을 통해 부여된 모든 권한을 평가합니다. 결과적으로 생성되는 권한은 두 유형의 권한을 합친 것입니다. 자격 증명 기반 정책, 리소스 기반 정책 또는 두 정책 모두에 의해 작업이 허용되는 경우 AWS에서는 해당 작업을 허용합니다. 이들 정책 중 하나에 포함된 명시적 거부는 허용을 재정의합니다.

자격 증명 기반 정책 및 리소스 기반 정책 평가

권한 경계와 함께 자격 증명 기반 정책 평가

AWS에서 사용자의 자격 증명 기반 정책 및 권한 경계를 평가하는 경우 결과적으로 두 범주의 공통된 권한만 권한으로 부여됩니다. 기존 자격 증명 기반 정책으로 사용자에 권한 경계를 추가하면 사용자가 수행할 수 있는 작업을 축소할 수 있습니다. 또는 사용자에게서 권한 경계를 제거하면 사용자가 수행할 수 있는 작업이 늘어날 수 있습니다. 이들 정책 중 하나에 포함된 명시적 거부는 허용을 재정의합니다. 다른 정책 유형을 권한 경계와 함께 평가하는 방식에 대해 자세히 알아보려면 경계가 있는 효과적인 권한 평가 섹션을 참조하세요.

자격 증명 기반 정책 및 권한 경계 평가

조직 SCP 또는 RCP와 함께 ID 기반 정책 평가

사용자가 조직의 멤버인 계정에 속하고 리소스 기반 정책이 구성되지 않은 리소스에 액세스하는 경우 결과 권한은 사용자 정책, 서비스 제어 정책(SCP) 및 리소스 제어 정책(RCP)의 교집합입니다. 즉, 세 가지 정책 유형 모두에서 작업을 허용해야 합니다. ID 기반 정책, SCP 또는 RCP의 명시적 거부는 허용을 재정의합니다.

ID 기반 정책 및 SCP 또는 RCP 평가

AWS Organizations에서 계정이 조직의 멤버인지 여부를 알아볼 수 있습니다. 조직 멤버가 SCP 또는 RCP의 영향을 받을 수 있습니다. AWS CLI 명령 또는 AWS API 작업을 사용하여 이 데이터를 보려면 조직 엔터티에 대해 organizations:DescribeOrganization 작업 권한이 있어야 합니다. 조직 콘솔에서 작업을 수행할 추가 권한이 있어야 합니다. SCP 또는 RCP가 특정 요청에 대한 액세스를 거부하는지 여부를 확인하거나 유효 권한을 변경하려면 AWS Organizations 관리자에게 문의하세요.

자격 증명 기반 정책 및 리소스 기반 정책 평가 예제

가장 일반적인 정책 유형은 자격 증명 정책 및 리소스 기반 정책입니다. 리소스에 대한 액세스가 요청되면 AWS는 동일한 계정 내에서 하나 이상의 Allow에 대해 정책에서 부여한 모든 권한을 평가합니다. 정책 중 하나에 포함된 명시적 거부는 허용을 재정의합니다.

중요

동일한 계정 내의 ID 기반 정책이나 리소스 기반 정책 중 하나는 요청을 허용하고 다른 하나는 허용하지 않는 경우에도 요청은 계속 허용됩니다.

Carlos가 carlossalazar라는 사용자 이름을 쓰고 있고 amzn-s3-demo-bucket-carlossalazar-logs Amazon S3 버킷에 파일을 저장하고자 한다고 가정합니다.

또한 다음 정책이 carlossalazar IAM 사용자와 연결되었다고 가정합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowS3ListRead", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetAccountPublicAccessBlock", "s3:ListAccessPoints", "s3:ListAllMyBuckets" ], "Resource": "arn:aws:s3:::*" }, { "Sid": "AllowS3Self", "Effect": "Allow", "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar/*", "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar" ] }, { "Sid": "DenyS3Logs", "Effect": "Deny", "Action": "s3:*", "Resource": "arn:aws:s3:::*log*" } ] }

이 정책의 AllowS3ListRead 설명문은 카를로스가 계정에 있는 모든 버킷 목록을 보도록 허용합니다. AllowS3Self 설명문은 카를로스가 그의 사용자 이름과 동일한 버킷에 모두 액세스할 수 있도록 허용합니다. DenyS3Logs 설명문은 카를로스가 그의 이름 아래에 있는 log를 통해 모든 S3 버킷의 액세스를 거부합니다.

또한, 다음 리소스 기반 정책(버킷 정책이라고 함)은 amzn-s3-demo-bucket-carlossalazar 버킷에 연결됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/carlossalazar" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar/*", "arn:aws:s3:::amzn-s3-demo-bucket-carlossalazar" ] } ] }

이 정책은 carlossalazar 사용자만 amzn-s3-demo-bucket-carlossalazar 버킷에 액세스할 수 있도록 지정합니다.

카를로스가 amzn-s3-demo-bucket-carlossalazar-logs 버킷에 파일을 저장하도록 요청하면 AWS는 해당 요청에 어떤 정책을 적용할지 결정합니다. 이 경우, 자격 증명 기반 정책과 리소스 기반 정책만 적용합니다. 이들은 모두 권한 정책입니다. 어떠한 권한 경계도 적용되지 않기 때문에 평가 로직은 다음 로직으로 줄어듭니다.

평가 순서도

AWS는 먼저 요청 콘텍스트에 적용되는 Deny 설명문을 확인합니다. 자격 증명 기반 정책은 카를로스의 로깅을 통한 모든 S3 버킷의 액세스를 명시적으로 거부하기 때문에 이를 찾습니다. 카를로스의 액세스가 거부됩니다.

Carlos가 실수를 알아차리고 amzn-s3-demo-bucket-carlossalazar 버킷에 파일을 저장하고자 한다고 가정하세요. AWS는 Deny 설명문을 확인하지만 찾지 못합니다. 그러면 권한 정책을 확인합니다. 자격 증명 기반 정책과 리소스 기반 정책 모두 요청을 허용합니다. 따라서 AWS는 요청을 허용합니다. 이들 중 하나라도 설명문을 명시적으로 거부한다면 요청은 거부됩니다. 정책 유형 중 하나는 요청을 허용하고 다른 하나는 요청을 허용하지 않는 경우에도 요청은 허용됩니다.