SCP 구문
서비스 제어 정책(SCP)은 AWS Identity and Access Management(IAM) 권한 정책 및 (Amazon S3 버킷 정책 같은) 리소스 기반 정책에서 사용하는 것과 대단히 유사한 구문을 사용합니다. IAM 정책과 그 구문에 대한 자세한 내용은 IAM 사용 설명서의 IAM 정책 개요를 참조하세요.
SCP는 JSON
참고
SCP 내 모든 문자는 최대 크기를 기준으로 계수됩니다. 이 설명서의 예제는 가독성을 높이기 위한 추가 공백으로 포맷된 SCP를 보여 줍니다. 하지만 정책 크기가 최대 크기에 근접한 경우 공백을 저장하려면 인용 부호 바깥에 있는 공백 문자(예: 공백 및 줄 바꿈)를 모두 삭제할 수 있습니다.
SCP에 대한 일반적인 내용은 서비스 제어 정책(SCP) 단원을 참조하세요.
요소 요약
다음 표에는 SCP에서 사용할 수 있는 정책 요소가 요약되어 있습니다. 일부 정책 요소는 작업을 거부하는 SCP에서만 사용할 수 있습니다. 지원되는 효과(Supported effects) 열에는 SCP에서 각 정책 요소와 함께 사용할 수 있는 효과 유형이 나열되어 있습니다.
Element | 용도 | 지원되는 효과 |
---|---|---|
버전 | 정책을 처리하는 데 사용할 언어 구문 규칙을 지정합니다. |
|
Statement | 정책 요소 컨테이너의 역할을 합니다. SCP에 여러 문을 포함할 수 있습니다. | Allow , Deny |
Statement ID(Sid) | (선택 사항) 문의 표시 이름을 제공합니다. | Allow , Deny |
효과 | SCP 문이 계정의 IAM 사용자 및 역할에 대해 액세스를 허용하는지, 아니면 거부하는지를 정의합니다. | Allow , Deny |
SCP가 허용 또는 거부하는 AWS 서비스 및 작업입니다. |
|
|
SCP가 적용되지 않는 AWS 서비스 및 작업을 지정합니다. |
|
|
리소스 | SCP가 적용되는 AWS 리소소를 지정합니다. | Deny |
Condition | 문이 효력을 발휘하는 조건을 지정합니다. | Deny |
다음 섹션에서는 SCP에서 정책 요소가 사용되는 방식에 대한 자세한 설명 및 예제를 제공합니다.
Version
요소
모든 SCP에는 값이 "2012-10-17"
인 Version
요소가 있어야 합니다. 이 버전 값은 IAM 권한 정책의 최신 버전과 같습니다.
"Version": "2012-10-17",
자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 요소: 버전을 참조하세요.
Statement
요소
SCP는 하나 이상의 Statement
요소로 구성됩니다. 정책은 Statement
키워드 하나만 가질 수 있지만, 값은 ([ ] 문자로 구분한) JSON 문 어레이가 될 수 있습니다.
다음 예제는 하나의 Effect
, Action
및 Resource
요소로 구성된 한 문을 보여줍니다.
"Statement": { "Effect": "Allow", "Action": "*", "Resource": "*" }
다음 예제는 하나의 Statement
요소 안에 어레이 목록으로 존재하는 문 2개를 보여줍니다. 첫 번째 문은 모든 작업을 허용하지만 두 번째 문은 모든 EC2 작업을 거부합니다. 그 결과 계정 관리자는 Amazon Elastic Compute Cloud(Amazon EC2)를 제외한 모든 출처의 권한을 위임할 수 있습니다.
"Statement": [ { "Effect": "Allow", "Action": "*", "Resource": "*" }, { "Effect": "Deny", "Action": "ec2:*", "Resource": "*" } ]
자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 요소: 문을 참조하세요.
Statement ID(Sid
) 요소
Sid
는 정책 문에 입력되는 식별자(옵션)입니다. Sid
값은 문 배열에서 각 문에 할당할 수 있습니다. 다음 예제 SCP는 샘플 Sid
문을 보여줍니다.
{ "Statement": { "Sid": "AllowsAllActions", "Effect": "Allow", "Action": "*", "Resource": "*" } }
자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 요소: ID를 참조하세요.
Effect
요소
각 문에는 Effect
요소 하나가 있어야 합니다. 이때 값은 Allow
또는 Deny
가 될 수 있습니다. 이것은 같은 문에서 나열하는 모든 작업에 영향을 줍니다.
자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 요소: 효과를 참조하세요.
"Effect": "Allow"
다음 예제는 계정 사용자가 Amazon S3 서비스를 위한 작업을 수행하도록 허용하는 Allow
값을 갖는 Effect
요소를 포함한 문이 있는 SCP를 보여줍니다. 이 예제는 허용 목록 전략을 사용하는 조직에서 유용하게 활용할 수 있습니다(기본 FullAWSAccess
정책이 모두 분리되어 있어 기본적으로 권한이 묵시적으로 거부되는 전략). 결과적으로 이 문은 연결된 모든 계정에 대해 Amazon S3 권한을 허용합니다.
{ "Statement": { "Effect": "Allow", "Action": "s3:*", "Resource": "*" } }
이 문은 IAM 권한 정책과 동일한 Allow
값 키워드를 사용하지만, SCP에서는 실제로 사용자에게 특정 작업을 수행할 수 있는 권한을 부여하지 않습니다. 대신 SCP는 조직 내 IAM 사용자 및 IAM 역할에 대한 최대 권한을 지정하는 필터 역할을 합니다. 이전 예제에서, 계정의 사용자에게 AdministratorAccess
관리형 정책이 연결돼 있다 하더라도 이 SCP는 영향받는 계정의 모든 사용자가 Amazon S3 작업만 할 수 있게 합니다.
"Effect": "Deny"
Effect
요소의 값이 Deny
인 문에서는 특정 리소스에 대한 액세스를 제한하거나 SCP가 효력을 발휘하는 조건을 정의할 수도 있습니다.
다음 예제는 거부 문에서 조건 키를 사용하는 방법을 보여줍니다.
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:InstanceType": "t2.micro" } } } }
SCP에서 이 문은 Amazon EC2 인스턴스가 t2.micro
로 설정되지 않은 경우 영향받는 계정(SCP가 계정 자체에 연결된 계정 또는 계정을 포함한 조직 루트 또는 OU에 연결된 계정)이 Amazon EC2 인스턴스를 시작하는 것을 금지하는 가드레일을 설정합니다. 이 작업을 허용하는 IAM 정책이 계정에 연결되어 있더라도 SCP에 의해 생성된 가드레일이 이를 금지합니다.
Action
및 NotAction
요소
각 문은 다음 중 하나를 포함해야 합니다.
-
허용 및 거부 문에서,
Action
요소. -
거부 문에서만(
Effect
요소의 값이Deny
인 경우),Action
또는NotAction
요소.
Action
또는 NotAction
요소의 값은 문이 허용하거나 거부하는 AWS 서비스 및 작업을 식별하는 문자열의 목록(JSON 배열)입니다.
각 문자열은 서비스의 소문자 약자("s3", "ec2", "iam" 또는 "organizations" 등) 뒤에 콜론이 오고 그 뒤에 해당 서비스의 작업이 붙는 형태로 구성됩니다. Action 및 NotAction은 대/소문자를 구분하지 않습니다. 일반적으로 각 단어는 첫 글자만 대문자로, 나머지는 소문자로 입력합니다. 예: "s3:ListAllMyBuckets"
.
SCP에서 별표(*) 또는 물음표(?) 와 같은 와일드카드 문자도 사용할 수도 있습니다.
-
이름의 일부를 공유하는 여러 작업을 일치시키려면 별표(*)를 와일드카드로 사용하십시오.
"s3:*"
값은 Amazon S3 서비스의 모든 작업을 의미합니다."ec2:Describe*"
값은 "Describe"로 시작하는 EC2 작업에만 대응합니다. -
단일 문자를 일치시키려면 물음표(?) 와일드카드를 사용하십시오.
참고
SCP에서 Action
또는 NotAction
요소의 와일드카드 문자 (*) 및 (?)는 단독으로 또는 문자열 끝에만 사용할 수 있습니다. 문자열 처음이나 중간에는 표시할 수 없습니다. 따라서 "servicename:action*"
은 유효하지만 "servicename:*action"
과 "servicename:some*action"
은 SCP에서 유효하지 않습니다.
AWS Organizations SCP와 IAM 권한 정책에서 모두 지원하는 서비스와 작업의 전체 목록을 확인하려면 서비스 권한 부여 참도의 AWS 서비스에 대한 작업, 리소스 및 조건 키를 참조하세요.
자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 요소: Action 및 IAM JSON 정책 요소: NotAction을 참조하세요.
Action
요소 예제
다음은 계정 관리자가 계정의 EC2 인스턴스에 대한 권한 설명, 시작, 중단, 중지를 위임하게 하는 문이 포함된 SCP를 보여주는 예제입니다. 이 예제는 허용 목록의 예입니다. 허용 목록은 기본 Allow *
정책이 연결되지 않아 기본적으로 권한이 묵시적으로 거부되는 때에 유용합니다. 기본 Allow
*
정책이 다음과 같은 정책이 연결된 루트, OU 또는 계정에 여전히 연결돼 있다면, 해당 정책은 영향을 주지 못하게 됩니다.
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeSecurityGroups", "ec2:DescribeAvailabilityZones", "ec2:RunInstances", "ec2:TerminateInstances", "ec2:StopInstances", "ec2:StartInstances" ], "Resource": "*" } }
다음 예제는 연결된 계정에서 사용하지 않으려는 서비스에 대해 액세스를 거부하는 방법을 보여 줍니다. 기본 "Allow *"
SCP가 모든 OU와 루트에 여전히 연결돼 있다고 가정합니다. 이 예제 정책은 연결 계정에 있는 계정 관리자가 IAM, Amazon EC2, Amazon RDS 서비스에 대해 어떤 권한도 위임하지 못하게 합니다. 이러한 권한을 거부하는 다른 연결된 정책이 없는 한, 다른 서비스의 모든 작업을 위임할 수 있습니다.
{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "iam:*", "ec2:*", "rds:*" ], "Resource": "*" } }
NotAction
요소 예제
다음 예에서는 NotAction
요소를 사용하여 정책 효과에서 AWS 서비스를 제외하는 방법을 보여줍니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "LimitActionsInRegion", "Effect": "Deny", "NotAction": "iam:*", "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": "us-west-1" } } } ] }
이 문에서 영향을 받는 계정은 IAM 작업을 사용하는 경우를 제외하고 지정된 AWS 리전에서 작업을 수행하는 것으로 제한됩니다.
Resource
요소
Effect
요소의 값이 Allow
인 문에서는 SCP의 Resource
요소에 "*"만 지정할 수 있습니다. 개별 Amazon 리소스 이름(ARN) 리소스를 지정할 수 없습니다.
리소스 요소에서 별표(*) 또는 물음표(?)와 같은 와일드카드 문자를 사용할 수도 있습니다.
-
이름의 일부를 공유하는 여러 작업을 일치시키려면 별표(*)를 와일드카드로 사용하십시오.
-
단일 문자를 일치시키려면 물음표(?) 와일드카드를 사용하십시오.
Effect
요소의 값이 Deny
인 문에서는 다음 예제와 같이 개별 ARN을 지정하는 것이 가능합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessToAdminRole", "Effect": "Deny", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DeleteRolePermissionsBoundary", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePermissionsBoundary", "iam:PutRolePolicy", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": [ "arn:aws:iam::*:role/
role-to-deny
" ] } ] }
이 SCP는 영향받는 계정의 IAM 사용자 및 역할이 조직 내 모든 계정에 생성된 공통 관리 IAM 역할을 변경하지 못하게 제한합니다.
자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 요소: 리소스를 참조하세요.
Condition
요소
SCP에서 거부 문에 Condition
요소를 지정할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAllOutsideEU", "Effect": "Deny", "NotAction": [
"cloudfront:*", "iam:*", "route53:*", "support:*"
], "Resource": "*", "Condition": { "StringNotEquals": { "aws:RequestedRegion": ["eu-central-1", "eu-west-1"
] } } } ] }
이 SCP는 나열된 서비스의 작업을 제외하고 eu-central-1
및 eu-west-1
리전 외부의 작업에 대한 액세스를 거부합니다.
자세한 정보는 IAM 사용 설명서의 IAM JSON 정책 요소: 조건을 참조하세요.
지원되지 않는 요소
다음 요소는 SCP에서 지원되지 않습니다.
-
Principal
-
NotPrincipal
-
NotResource