서비스 제어 정책의 생성, 업데이트, 삭제 - AWS Organizations

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

서비스 제어 정책의 생성, 업데이트, 삭제

조직의 관리 계정에 로그인하면 서비스 제어 정책(SCP)을 생성하거나 업데이트할 수 있습니다. 지정하는 서비스 및 작업에 대한 액세스를 거부하거나 허용하는 문을 작성하여 SCP를 생성합니다.

SCP 작업을 위한 기본 구성은 "차단 목록" 전략을 사용하는 것입니다. 이 전략에서는 액세스를 거부하는 문을 만들어 차단할 작업 외에는 모든 작업이 암시적으로 허용됩니다. 거부 명령문을 사용하면 명령문의 리소스 및 조건을 지정하고 NotAction요소를 사용할 수 있습니다. 허용 문에서는 서비스 및 작업만 지정할 수 있습니다. 액세스를 거부하는 문과 액세스를 허용하는 문에 대한 자세한 내용은 SCP 평가 단원을 참조하세요.

작은 정보

IAM에서 서비스가 마지막으로 액세스한 데이터를, SCP 업데이트를 위한 데이터 포인트로 사용하여 필요한 AWS 서비스로만 액세스를 제한할 수 있습니다. 자세한 내용은 IAM 사용 설명서Organizations에서 서비스가 마지막으로 액세스한 데이터 보기를 참조하세요.

이 주제에서 수행할 작업

SCP 생성

최소 권한

SCP를 생성하려면 다음 작업을 실행할 수 있는 권한이 필요합니다.

  • organizations:CreatePolicy

AWS Management Console
서비스 제어 정책을 생성하려면
  1. AWS Organizations 콘솔에 로그인합니다. 조직의 관리 계정에서 IAM 사용자로 로그인하거나 IAM 역할을 맡거나 루트 사용자로 로그인(권장되지 않음)해야 합니다.

  2. 서비스 제어 정책(Service control policies) 페이지에서 정책 생성(Create policy)을 선택합니다.

  3. 새 서비스 제어 정책 생성(Create new service control policy) 페이지에서 정책 이름정책 설명(선택 사항)을 입력합니다.

  4. (선택 사항) 태그 추가(Add tags)를 선택한 다음 키 및 값(선택 사항)을 입력해 하나 이상의 태그를 추가합니다. 값을 공백으로 남겨두면 null이 아닌 빈 문자열로 설정됩니다. 한 정책에 최대 50개의 태그를 연결할 수 있습니다. 자세한 정보는 AWS Organizations 리소스에 태그 지정을 참조하세요.

    참고

    이어지는 대부분의 단계에서는 JSON 편집기의 오른쪽에 있는 컨트롤을 사용하여 요소별로 정책을 구성하는 방법에 대해 설명합니다. 또는 언제든 창 왼쪽의 JSON 편집기에 간단히 텍스트를 입력할 수 있습니다. 직접 입력하거나 복사 및 붙여넣기를 사용할 수 있습니다.

  5. 정책 작성은 추가하는 문이 액세스를 거부하는지, 아니면 허용하지에 따라 그 다음 단계가 달라집니다. 자세한 정보는 SCP 평가을 참조하세요. Deny명령문을 사용하면 특정 리소스에 대한 액세스를 제한하고, SCP가 적용되는 시기에 대한 조건을 정의하고, 요소를 사용할 수 있으므로 추가 제어가 가능합니다. NotAction 구문에 대한 자세한 내용은 SCP 구문 단원을 참조하세요.

    액세스를 거부하는 문을 추가하려면:

    1. 편집기의 오른쪽 명령문 편집 창에서 작업 추가에서 AWS 서비스를 선택합니다.

      오른쪽 창에서 옵션을 선택하면 JSON 편집기가 업데이트되어 왼쪽에 해당하는 JSON 정책이 표시됩니다.

    2. 서비스를 선택하면 해당 서비스에 대해 사용 가능한 작업이 포함된 목록이 열립니다. 모든 작업(All actions)을 선택하거나, 거부하려는 개별 작업을 하나 이상 선택할 수 있습니다.

      왼쪽의 JSON이 업데이트되면서 선택한 작업이 포함됩니다.

      참고

      개별 작업을 선택한 다음 돌아가서 모든 작업을 선택하는 경우 servicename/*에 대한 예상 항목이 JSON에 추가되지만 이전에 선택한 개별 작업은 JSON에 남아 제거되지 않습니다.

    3. 추가 서비스에서 작업을 추가하려면 문(Statement) 상자 상단에서 모든 서비스(All services)를 선택한 다음 필요에 따라 앞의 두 단계를 반복할 수 있습니다.

    4. 문에 포함할 리소스를 지정합니다.

      • 리소스 추가 옆에 있는 추가를 선택합니다.

      • 리소스 추가 대화 상자의 목록에서 리소스를 제어하려는 서비스를 선택합니다. 이전 단계에서 선택한 서비스 중에서만 선택할 수 있습니다.

      • 리소스 유형(Resource type)에서 제어할 리소스 유형을 선택합니다.

      • 마지막으로 액세스를 제어하려는 특정 리소스를 식별하기 위해 리소스 ARN(Resource ARN)에 Amazon 리소스 이름(ARN)을 작성합니다. 중괄호 {}로 둘러싸인 모든 자리 표시자를 교체해야 합니다. 해당 리소스 유형의 ARN 구문이 허용하는 경우 와일드카드(*)를 지정할 수 있습니다. 와일드카드를 사용할 수 있는 상황에 대한 내용은 특정 리소스 유형에 대한 설명서를 참조하세요.

      • 리소스 추가(Add resource)를 선택해 정책에 대한 추가 항목을 저장합니다. JSON의 Resource 요소는 추가 또는 변경 사항을 반영합니다. 리소스 요소는 필수입니다.

      작은 정보

      선택한 서비스에 대한 모든 리소스를 지정하려면 목록에서 모든 리소스(All resources) 옵션을 선택하거나 "Resource":"*"를 읽는 JSON에서 Resource 문을 직접 편집합니다.

    5. (선택 사항) 정책 문이 적용되는 상황을 제한하는 조건을 지정하려면 조건 추가 옆에 있는 추가를 선택합니다.

      • 조건 키 - 목록에서 모든 AWS 서비스에 사용할 수 있는 조건 키 (예:aws:SourceIp) 를 선택하거나 이 명령문에 대해 선택한 서비스 중 하나에 대한 서비스별 키를 선택할 수 있습니다.

      • 한정어(Qualifier) – (선택 사항) 조건에 여러 값을 입력할 경우(특정 조건 키에 따라 다름) 값에 대해 요청을 테스트할 한정어를 지정할 수 있습니다.

        • 기본값(Default) - 정책의 조건 키 값에 대해 요청의 한 값을 테스트합니다. 요청의 값이 정책의 값과 일치하면 조건이 true를 반환합니다. 정책에 둘 이상의 값이 지정되어 있으면 “or” 테스트로 처리되고, 요청 값이 임의의 정책 값과 일치하는 경우 조건이 true를 반환합니다.

        • 요청의 임의의 값에 대해(For any value in a request) - 요청이 여러 값을 가질 수 있는 경우 이 옵션은 요청 값 중 하나 이상이 정책의 조건 키 값 중 하나 이상과 일치하는지 확인합니다. 요청의 키 값 중 하나가 정책의 조건 값 중 하나와 일치하면 조건이 true를 반환합니다. 일치하는 키가 없거나 null 데이터 세트의 경우 조건에서 false를 반환합니다.

        • 요청의 모든 값에 대해(For all values in a request) - 요청이 여러 값을 가질 수 있는 경우 이 옵션은 모든 요청 값이 정책의 조건 키 값과 일치하는지 확인합니다. 요청의 모든 키 값이 정책에 있는 하나 이상의 값과 일치하면 조건이 true를 반환합니다. 요청에 키가 없거나 키 값이 빈 문자열과 같은 null 데이터 세트로 확인되는 경우에도 true를 반환합니다.

      • 연산자(Operator) - 연산자는 수행할 비교의 유형을 지정합니다. 표시되는 옵션은 조건 키의 데이터 유형에 따라 다릅니다. 예를 들어 aws:CurrentTime 전역 조건 키를 사용하면 날짜 비교 연산자 중 하나를 선택할 수 있습니다. 또는 Null을 사용하면 값이 요청에 있는지 여부를 테스트할 수 있습니다.

        Null테스트를 제외한 모든 조건 연산자의 경우 옵션을 선택할 수 있습니다. IfExists

      • 값(Value) - (선택 사항) 요청에서 테스트할 값을 하나 이상 지정합니다.

      조건 추가를 선택합니다.

      조건 키에 대한 자세한 내용은 IAM 사용 설명서IAM JSON 정책 요소: 조건을 참조하세요.

    6. (선택 사항) NotAction 요소를 사용하여 지정된 작업을 제외한 모든 작업에 대해 액세스를 거부하려면 왼쪽 창의 ActionNotAction으로 바꿉니다("Effect": "Deny", 요소 바로 뒤에서). 자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 NotAction 요소:를 참조하십시오.

  6. 액세스를 허용하는 문을 추가하려면:

    1. 왼쪽의 JSON 편집기에서 "Effect": "Deny" 라인을 "Effect": "Allow"로 변경합니다.

      오른쪽 창에서 옵션을 선택하면 JSON 편집기가 업데이트되어 왼쪽에 해당하는 JSON 정책이 표시됩니다.

    2. 서비스를 선택하면 해당 서비스에 대해 사용 가능한 작업이 포함된 목록이 열립니다. 모든 작업(All actions)을 선택하거나, 허용하려는 개별 작업을 하나 이상 선택할 수 있습니다.

      왼쪽의 JSON이 업데이트되면서 선택한 작업이 포함됩니다.

      참고

      개별 작업을 선택한 다음 돌아가서 모든 작업을 선택하는 경우 servicename/*에 대한 예상 항목이 JSON에 추가되지만 이전에 선택한 개별 작업은 JSON에 남아 제거되지 않습니다.

    3. 추가 서비스에서 작업을 추가하려면 문(Statement) 상자 상단에서 모든 서비스(All services)를 선택한 다음 필요에 따라 앞의 두 단계를 반복할 수 있습니다.

  7. (선택 사항) 정책에 다른 문을 추가하려면 문 추가(Add statement)를 선택하고 시각적 편집기를 사용하여 다음 문을 작성합니다.

  8. 문을 모두 추가했으면 정책 생성을 선택하여 완료된 SCP를 저장합니다.

새 SCP가 조직의 정책 목록에 표시됩니다. 이제 루트, OU 또는 계정에 SCP를 연결할 수 있습니다.

AWS CLI & AWS SDKs
서비스 제어 정책을 생성하려면

다음 명령 중 하나를 사용하여 SCP를 생성할 수 있습니다.

  • AWS CLI: create-policy

    다음 예제에서는 JSON 정책 텍스트가 포함된 Deny-IAM.json이라는 파일을 가정합니다. 이 파일은 새 서비스 제어 정책을 생성하는 데 사용됩니다.

    $ aws organizations create-policy \ --content file://Deny-IAM.json \ --description "Deny all IAM actions" \ --name DenyIAMSCP \ --type SERVICE_CONTROL_POLICY { "Policy": { "PolicySummary": { "Id": "p-i9j8k7l6m5", "Arn": "arn:aws:organizations::123456789012:policy/o-aa111bb222/service_control_policy/p-i9j8k7l6m5", "Name": "DenyIAMSCP", "Description": "Deny all IAM actions", "Type": "SERVICE_CONTROL_POLICY", "AwsManaged": false }, "Content": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Statement1\",\"Effect\":\"Deny\",\"Action\":[\"iam:*\"],\"Resource\":[\"*\"]}]}" } }
  • AWS SDK: CreatePolicy

참고

SCP는 관리 계정과 몇 가지 다른 상황에서는 적용되지 않습니다. 자세한 정보는 작업 및 엔터티는 SCP로 제한할 수 없습니다.을 참조하세요.

SCP 업데이트

조직의 관리 계정에 로그인하면, 정책의 이름을 변경하거나 내용을 변경할 수 있습니다. SCP 내용 변경은 연결된 모든 계정의 사용자, 그룹과 역할에 즉시 영향을 줍니다.

최소 권한

SCP를 업데이트하려면 다음 작업을 실행할 수 있는 권한이 필요합니다.

  • 동일한 정책 명령문에서 지정된 정책의 ARN(또는 "*")을 포함하는 Resource 요소를 가진 organizations:UpdatePolicy

  • 동일한 정책 명령문에서 지정된 정책의 ARN(또는 "*")을 포함하는 Resource 요소를 가진 organizations:DescribePolicy

AWS Management Console
정책을 업데이트하려면
  1. AWS Organizations 콘솔에 로그인합니다. 조직의 관리 계정에서 IAM 사용자로 로그인하거나 IAM 역할을 맡거나 루트 사용자로 로그인(권장되지 않음)해야 합니다.

  2. 서비스 제어 정책 페이지에서 업데이트할 정책의 이름을 선택합니다.

  3. 정책의 세부 정보 페이지에서 정책 편집(Edit policy)을 선택합니다.

  4. 다음 중 원하는 변경을 수행합니다.

    • 정책 이름(Policy name)에 새 이름을 입력하여 정책 이름을 변경할 수 있습니다.

    • 정책 설명(Policy description)에 새 텍스트를 입력하여 설명을 변경할 수 있습니다.

    • 왼쪽 창에서 JSON 형식의 정책을 편집하여 정책 텍스트를 편집할 수 있습니다. 또는 오른쪽 편집기에서 문을 선택하고 컨트롤을 사용하여 해당 요소를 변경할 수도 있습니다. 각 컨트롤에 대한 자세한 내용은 이 주제 앞부분의 SCP 프로시저 생성을 참조하세요.

  5. 작업을 마쳤으면 변경 내용 저장을 선택합니다.

AWS CLI & AWS SDKs
정책을 업데이트하려면

정책을 업데이트하려면 다음 명령 중 한 가지를 사용합니다.

  • AWS CLI: update-policy

    다음 예제에서는 정책의 이름을 변경합니다.

    $ aws organizations update-policy \ --policy-id p-i9j8k7l6m5 \ --name "MyRenamedPolicy" { "Policy": { "PolicySummary": { "Id": "p-i9j8k7l6m5", "Arn": "arn:aws:organizations::123456789012:policy/o-aa111bb222/service_control_policy/p-i9j8k7l6m5", "Name": "MyRenamedPolicy", "Description": "Blocks all IAM actions", "Type": "SERVICE_CONTROL_POLICY", "AwsManaged": false }, "Content": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Statement1\",\"Effect\":\"Deny\",\"Action\":[\"iam:*\"],\"Resource\":[\"*\"]}]}" } }

    다음 예제에서는 서비스 제어 정책에 대한 설명을 추가하거나 변경합니다.

    $ aws organizations update-policy \ --policy-id p-i9j8k7l6m5 \ --description "My new policy description" { "Policy": { "PolicySummary": { "Id": "p-i9j8k7l6m5", "Arn": "arn:aws:organizations::123456789012:policy/o-aa111bb222/service_control_policy/p-i9j8k7l6m5", "Name": "MyRenamedPolicy", "Description": "My new policy description", "Type": "SERVICE_CONTROL_POLICY", "AwsManaged": false }, "Content": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"Statement1\",\"Effect\":\"Deny\",\"Action\":[\"iam:*\"],\"Resource\":[\"*\"]}]}" } }

    다음 예제에서는 새 JSON 정책 텍스트를 포함한 파일을 지정하여 SCP의 정책 문서를 변경합니다.

    $ aws organizations update-policy \ --policy-id p-zlfw1r64 --content file://MyNewPolicyText.json { "Policy": { "PolicySummary": { "Id": "p-i9j8k7l6m5", "Arn": "arn:aws:organizations::123456789012:policy/o-aa111bb222/service_control_policy/p-i9j8k7l6m5", "Name": "MyRenamedPolicy", "Description": "My new policy description", "Type": "SERVICE_CONTROL_POLICY", "AwsManaged": false }, "Content": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"AModifiedPolicy\",\"Effect\":\"Deny\",\"Action\":[\"iam:*\"],\"Resource\":[\"*\"]}]}" } }
  • AWS SDK: UpdatePolicy

자세한 정보

SCP 생성에 대한 자세한 내용은 다음 주제를 참조하세요.

SCP에 연결된 태그 편집

조직의 관리 계정으로 로그인하여 SCP에 연결된 태그를 추가하거나 제거할 수 있습니다. 태그 지정에 대한 자세한 내용은 단원을 참조하세요AWS Organizations 리소스에 태그 지정

최소 권한

AWS 조직의 SCP에 첨부된 태그를 편집하려면 다음 권한이 있어야 합니다.

  • organizations:DescribeOrganization – Organizations 콘솔을 사용하는 경우에만 필요합니다.

  • organizations:DescribePolicy – Organizations 콘솔을 사용하는 경우에만 필요합니다.

  • organizations:TagResource

  • organizations:UntagResource

AWS Management Console
SCP에 연결된 태그를 편집하려면
  1. AWS Organizations 콘솔에 로그인합니다. 조직의 관리 계정에서 IAM 사용자로 로그인하거나 IAM 역할을 맡거나 루트 사용자로 로그인(권장되지 않음)해야 합니다.

  2. 서비스 제어 정책(Service control policies) 페이지에서 편집할 태그가 있는 정책의 이름을 선택합니다.

  3. 정책 세부 정보 페이지에서 태그(Tags) 탭을 선택한 다음 태그 관리(Manage tags)를 선택합니다.

  4. 다음 중 원하는 변경을 수행합니다.

    • 이전 값 대신 새 값을 입력하여 태그 값을 변경합니다. 태그 키는 직접 수정할 수 없습니다. 키를 변경하려면 이전 키를 가진 태그를 삭제한 다음 새 키를 가진 태그를 추가해야 합니다.

    • 제거(Remove)를 선택하여 기존 태그를 제거합니다.

    • 새로운 태그 키 및 값 페어를 추가합니다. 태그 추가(Add tag)를 선택한 다음 제시되는 상자에 새로운 키 이름과 값을 입력합니다. 값은 선택 사항입니다. 값(Value) 상자를 비워두면 null이 아닌 빈 문자열이 됩니다.

  5. 작업을 마쳤으면 변경 내용 저장을 선택합니다.

AWS CLI & AWS SDKs
SCP에 연결된 태그를 편집하려면

다음 명령 중 하나를 사용하여 SCP에 연결된 태그를 편집할 수 있습니다.

SCP 삭제

조직의 관리 계정에 로그인하면 조직에서 더 이상 필요 없는 정책을 삭제할 수 있습니다.

참고
  • 정책을 삭제하기 전에 먼저 연결된 모든 개체에서 정책을 분리해야 합니다.

  • 이름이 지정된 SCP와 같은 AWS 관리되는 SCP는 삭제할 수 없습니다. FullAWSAccess

최소 권한

SCP를 삭제하려면 다음 작업을 실행할 수 있는 권한이 필요합니다.

  • organizations:DeletePolicy

SCP를 삭제하려면
  1. AWS Organizations 콘솔에 로그인합니다. 조직의 관리 계정에서 IAM 사용자로 로그인하거나 IAM 역할을 맡거나 루트 사용자로 로그인(권장되지 않음)해야 합니다.

  2. 서비스 제어 정책(Service control policies) 페이지에서 삭제할 SCP의 이름을 선택합니다.

  3. 먼저 모든 루트, OU와 계정에서 삭제하려는 정책을 분리해야 합니다. 대상(Targets) 탭을 선택하고 대상 목록에 표시된 각 루트, OU 또는 계정 옆에 있는 라디오 버튼을 선택한 다음 분리(Detach)를 선택합니다. 확인 대화 상자에서 분리(Detach)를 선택합니다. 모든 대상을 제거할 때까지 반복합니다.

  4. 페이지 상단에서 삭제(Delete)를 선택합니다.

  5. 확인 대화 상자에서 정책의 이름을 입력한 다음 삭제(Delete)를 선택합니다.

SCP를 삭제하려면

다음 코드 예제는 DeletePolicy의 사용 방법을 보여줍니다.

.NET
AWS SDK for .NET
참고

더 많은 정보가 있습니다. GitHub AWS 코드 예제 리포지토리에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

using System; using System.Threading.Tasks; using Amazon.Organizations; using Amazon.Organizations.Model; /// <summary> /// Deletes an existing AWS Organizations policy. /// </summary> public class DeletePolicy { /// <summary> /// Initializes the Organizations client object and then uses it to /// delete the policy with the specified policyId. /// </summary> public static async Task Main() { // Create the client object using the default account. IAmazonOrganizations client = new AmazonOrganizationsClient(); var policyId = "p-00000000"; var request = new DeletePolicyRequest { PolicyId = policyId, }; var response = await client.DeletePolicyAsync(request); if (response.HttpStatusCode == System.Net.HttpStatusCode.OK) { Console.WriteLine($"Successfully deleted Policy: {policyId}."); } else { Console.WriteLine($"Could not delete Policy: {policyId}."); } } }
  • API 세부 정보는 AWS SDK for .NET API DeletePolicy참조를 참조하십시오.

CLI
AWS CLI

정책을 삭제하는 방법

다음 예시에서는 조직에서 정책을 삭제하는 방법을 보여줍니다. 이 예시에서는 이전에 정책을 모든 엔터티에서 분리했다고 가정합니다.

aws organizations delete-policy --policy-id p-examplepolicyid111
  • API 세부 정보는 AWS CLI 명령 DeletePolicy참조를 참조하십시오.

Python
SDK for Python(Boto3)
참고

자세한 내용은 에서 확인할 수 GitHub 있습니다. AWS 코드 예제 리포지토리에서 전체 예제를 찾고 설정 및 실행하는 방법을 배워보세요.

def delete_policy(policy_id, orgs_client): """ Deletes a policy. :param policy_id: The ID of the policy to delete. :param orgs_client: The Boto3 Organizations client. """ try: orgs_client.delete_policy(PolicyId=policy_id) logger.info("Deleted policy %s.", policy_id) except ClientError: logger.exception("Couldn't delete policy %s.", policy_id) raise
  • API에 대한 자세한 내용은 파이썬용AWS SDK (Boto3) API 레퍼런스를 참조하십시오 DeletePolicy.