계층적 보안 정책 구성

이 페이지에는 조직, 폴더 또는 프로젝트를 보호하기 위해 계층적 보안 정책을 구성하는 방법에 대한 정보가 포함되어 있습니다. 계층적 보안 정책을 구성하기 전에 계층적 보안 정책 개요의 정보를 숙지해야 합니다.

계층적 보안 정책의 IAM 권한 설정

다음 작업에는 대상 리소스 계층 구조 노드 또는 정책 자체(이미 있는 경우)에 대한 Identity and Access Management(IAM) 역할인 Compute 조직 보안 정책 관리자 역할(roles/compute.orgSecurityPolicyAdmin)이 필요합니다.

  • 새 계층적 보안 정책 만들기
  • 규칙을 추가, 업데이트 또는 삭제하여 계층적 보안 정책 수정
  • 계층적 보안 정책 삭제

다음 작업에는 대상 리소스 계층 구조 노드에 대한 IAM Compute 조직 리소스 관리자 역할(roles/compute.orgSecurityResourceAdmin)과 대상 리소스 계층 구조 노드 또는 정책 자체에 대한 Compute 조직 보안 정책 관리자 역할(roles/compute.orgSecurityPolicyAdmin) 또는 Compute 조직 보안 정책 사용자 역할(roles/compute.orgSecurityPolicyUser)이 필요합니다.

  • 계층적 보안 정책을 리소스 계층 구조 노드와 연결

마지막으로, 다음 표에서 나열된 역할이 있는 경우 실행할 수 있는 기타 작업 목록을 확인하세요.

작업 역할
백엔드 리소스의 모든 유효한 Google Cloud Armor 규칙 보기
organizationSecurityPolicy에 포함된 효과적인 백엔드 리소스 보기

계층적 보안 정책 구성

다음 섹션에서는 계층적 보안 정책을 만들고, 리소스 계층 구조 노드와 연결하고, 노드 간에 이동하고, 삭제하는 방법과 보호된 리소스에 적용되는 모든 Google Cloud Armor 보안 정책 규칙을 보는 방법을 설명합니다.

계층적 보안 정책 만들기

gcloud beta compute org-security-policies create 명령어를 사용하여 계층적 보안 정책을 만듭니다. --organization 또는 --folder 플래그와 해당 ORGANIZATION_ID 또는 FOLDER_ID를 사용하여 조직 또는 폴더 아래에 계층적 보안 정책을 만듭니다. 다음 예시를 사용하여 계층적 보안 정책을 만듭니다. 여기서 POLICY_NAME은 새 보안 정책에 지정할 이름으로 바꿉니다.

  • 조직 수준 계층적 보안 정책을 만듭니다.

    gcloud beta compute org-security-policies create \
        --organization=ORGANIZATION_ID \
        --type=CLOUD_ARMOR \
        --short-name=POLICY_NAME
    
  • 폴더 수준 계층적 보안 정책을 만듭니다.

    gcloud beta compute org-security-policies create \ 
        --folder=FOLDER_ID \
        --type=CLOUD_ARMOR \
        --short-name=POLICY_NAME
    

기존 보안 정책을 리소스 계층 구조 노드와 연결

기존 보안 정책이 있는 경우 gcloud beta compute org-security-policies associations create 명령어를 사용하여 리소스 계층 구조 노드와 연결할 수 있습니다. 다음을 바꿉니다.

  • POLICY_ID: 보안 정책의 ID
  • POLICY_NAME: 보안 정책의 이름
  • ORGANIZATION_ID: 조직의 ID
  • FOLDER_ID: 폴더의 ID
  • PROJECT_ID: 프로젝트 ID

  • 계층적 보안 정책을 조직에 연결합니다.

    gcloud beta compute org-security-policies associations create \
        --security-policy=POLICY_ID \
        --organization=ORGANIZATION_ID \
        --name=ASSOCIATION_NAME
    
  • 계층적 보안 정책을 폴더에 연결합니다.

    gcloud beta compute org-security-policies associations create \
        --security-policy=POLICY_ID \
        --folder=FOLDER_ID \
        --name=ASSOCIATION_NAME
    
  • 계층적 보안 정책을 프로젝트에 연결합니다.

    gcloud beta compute org-security-policies associations create \
      --security-policy=POLICY_ID \
      --project-number=PROJECT_ID \
      --name=ASSOCIATION_NAME
    

계층적 보안 정책에서 프로젝트 제외

또한 폴더 수준 계층적 보안 정책에서 프로젝트를 제외할 수 있으며 조직 수준 계층적 보안 정책에서 프로젝트와 폴더를 모두 제외할 수 있습니다.

  • beta compute org-security-policies associations create 명령어와 --excluded-projects 플래그를 사용하여 계층적 보안 정책에서 프로젝트를 제외할 수 있습니다.

    다음 예시 명령어는 ID가 2000000002인 프로젝트를 제외하면서 보안 정책 example-policy를 조직 10000001와 연결합니다.

    gcloud beta compute org-security-policies associations create \
        --security-policy=example-policy \
        --excluded-projects="projects/2000000002" \
        --organization=10000001
    
  • --excluded-folders 플래그와 함께 beta compute org-security-policies associations create 명령어를 사용하여 조직 수준 계층적 보안 정책에서 폴더를 제외할 수 있습니다.

    다음 예시 명령어는 ID가 3000000003인 폴더를 제외하면서 보안 정책 example-policy를 조직 10000001와 연결합니다.

    gcloud beta compute org-security-policies associations create \
        --security-policy=example-policy \
        --excluded-folders="folders/3000000003" \
        --organization=10000001
    

계층적 보안 정책 이동

gcloud beta compute org-security-policies move를 사용하여 계층적 보안 정책을 다른 상위 리소스 계층 구조 노드로 이동하여 계층적 보안 정책의 상위를 변경할 수 있습니다. 첫 번째 플래그로 소스를, 두 번째 플래그로 대상을 제공합니다. 계층적 보안 정책을 이동하면 소유권이 변경되지만 연결된 리소스는 변경되지 않습니다. 조직과 폴더만 계층적 보안 정책을 소유할 수 있으므로 프로젝트 아래로 이동할 수 없습니다.

다음 예에서는 계층적 보안 정책을 조직 ORGANIZATION_ID에서 폴더 FOLDER_ID로 이동합니다.

gcloud beta compute org-security-policies move policy-1 \
    --organization ORGANIZATION_ID \
    --folder FOLDER_ID

계층적 보안 정책 삭제

계층적 보안 정책을 삭제하려면 먼저 정책과 리소스 계층 구조 노드 간의 모든 연결을 삭제해야 합니다. 다음 예에서는 beta compute org-security-policies associations delete 명령어를 사용하여 POLICY_NAME이라는 이름의 계층적 보안 정책과 ORGANIZATION_ID 조직 간의 ASSOCIATION_NAME이라는 연결을 삭제합니다.

gcloud beta compute org-security-policies associations delete ASSOCIATION_NAME \
    --security-policy=POLICY_NAME \
    --organization=ORGANIZATION_ID

보안 정책에 연결된 항목이 하나가 아닌 경우 각 연결에 대해 이전 단계를 반복합니다. 계층적 보안 정책에 연결이 없으면 다음 예와 같이 compute org-security-policies delete 명령어를 사용하여 삭제할 수 있습니다.

gcloud beta compute org-security-policies delete POLICY_NAME \
    --organization=ORGANIZATION_ID

보호된 리소스의 모든 유효한 Google Cloud Armor 규칙 보기

gcloud beta compute backend-services get-effective-security-policies 명령어를 사용하여 보호된 리소스에 적용되는 모든 Google Cloud Armor 보안 정책 규칙을 볼 수 있습니다. 다음 예시에서 RESOURCE_NAME을 확인할 보호 리소스의 이름으로 바꿉니다.

gcloud beta compute backend-services get-effective-security-policies PROTECTED_RESOURCE

사용 사례

다음 섹션에서는 계층적 보안 정책의 사용 사례를 설명합니다.

조직의 모든 애플리케이션 부하 분산기에 대한 특정 IP 주소의 트래픽 거부

계층적 보안 정책을 사용하여 전체 조직 네트워크에 액세스할 수 없는 IP 주소 목록을 관리하거나 특정 지역 또는 국가의 트래픽을 거부할 수 있습니다. 이를 통해 회사별 보안 문제를 해결하거나 규정 준수를 유지할 수 있습니다. 다음 단계에서는 IP 주소 범위 192.0.2.0/24의 트래픽을 거부하는 조직 수준 계층적 보안 정책을 만드는 방법을 보여줍니다.

  1. ID가 1000000001인 조직에 연결된 org-level-deny-ip-policy라는 계층식 보안 정책을 만듭니다.

     gcloud beta compute org-security-policies create \
         --organization=1000000001 \
         --type=CLOUD_ARMOR \
         --description= "this is an org policy to deny a set of IP addresses for all resources" \
         --short-name=org-level-deny-ip-policy
    
  2. IP 주소 범위 192.0.2.0/24의 일치 조건과 deny 작업이 있는 우선순위 1000의 규칙을 추가합니다.

     gcloud beta compute org-security-policies rules create 1000 \
         --action=deny \
         --security-policy=org-level-deny-ip-policy \
         --organization=1000000001 \
         --description "Deny traffic from 192.0.2.0/24" \
         --src-ip-ranges "192.0.2.0/24"
    
  3. 마지막으로 보안 정책을 조직과 연결하여 192.0.2.0/24 IP 주소에서 조직의 모든 서비스로의 요청을 거부합니다.

     gcloud beta compute org-security-policies associations create \
         --security-policy=org-level-deny-ip-policy \
         --organization=ORGANIZATION_ID
    

조직 내 일부 프로젝트에 소스 IP 주소 집합에 대한 액세스 권한 부여

조직 내 일부 프로젝트에 대한 액세스 권한을 IP 주소 또는 여러 IP 주소에 부여할 수 있습니다. 신뢰할 수 있는 업스트림 프록시가 있고 이를 일부 프로젝트에서만 규칙 평가에서 제외하려는 경우 이 방법을 사용할 수 있습니다. 다음 Cloud CDN 기반 예에서는 폴더 수준 계층적 보안 정책을 사용하여 조직 10000001의 프로젝트 이름이 project-1, project-2, project-3인 프로젝트에 IP 주소 범위 192.0.2.0/24 액세스 권한을 부여합니다.

  1. 다음 명령어를 사용하여 project-1, project-2, project-3을 ID가 20000002인 폴더로 이동합니다.

    gcloud projects move project-1 --folder=20000002
    gcloud projects move project-2 --folder=20000002
    gcloud projects move project-3 --folder=20000002
    
  2. 다음 명령어를 사용하여 org-level-proxy-filtering이라는 보안 정책을 만듭니다.

     gcloud beta compute org-security-policies create \
         --folder=20000002 \
         --type=CLOUD_ARMOR \
         --short-name=org-level-proxy-filtering
    
  3. IP 주소 범위 192.0.2.0/24의 일치 조건과 goto_next 규칙 작업이 있는 우선순위 1000의 규칙을 추가합니다. 요청이 이 조건과 일치하면 Google Cloud Armor는 이 보안 정책 내에서 규칙 평가를 중지합니다.

     gcloud beta compute org-security-policies rules create 1000 \
         --action=goto_next \
         --security-policy=org-level-proxy-filtering \
         --organization=10000001 \
         --src-ip-ranges="192.0.2.0/24"
    
  4. 선택사항: 192.0.2.0/24에서 발생하지 않은 요청에 대해 이러한 프로젝트에 보안 정책 규칙을 적용하려면 1000보다 낮은 우선순위로 규칙을 추가합니다. 이 단계는 나중에 실행해도 됩니다.

  5. 다음 명령어를 사용하여 1단계에서 프로젝트를 이동한 ID 20000002의 폴더에 정책을 연결합니다.

     gcloud beta compute org-security-policies associations create \
         --security-policy=org-level-proxy-filtering \
         --folder=20000002
    

다음 단계