주소 그룹 구성

주소 그룹을 사용하면 여러 IP 주소와 IP 주소 범위를 이름이 지정된 단일 논리 단위로 결합할 수 있으며, 이 단위를 여러 제품에서 사용할 수 있습니다. 이 문서에서는 Google Cloud Armor 보안 정책과 함께 주소 그룹을 사용하는 방법을 설명합니다. 주소 그룹을 사용하려면 활성 상태의 Google Cloud Armor Enterprise 구독이 필요합니다.

시작하기 전에

주소 그룹을 구성하기 전에 먼저 Network Security API networksecurity.googleapis.com을 사용 설정해야 합니다.

IAM 역할

주소 그룹을 만들고 관리하려면 Compute 네트워크 관리자 역할(roles/compute.networkAdmin)이 필요합니다. 동일한 권한 집합을 사용하여 커스텀 역할을 정의할 수도 있습니다.

다음 표에서는 주소 그룹에서 태스크 집합을 수행하는 데 필요한 Identity and Access Management(IAM) 권한 목록을 제공합니다.

작업 IAM 역할 이름 IAM 권한
주소 그룹 만들기 및 관리 Compute 네트워크 관리자(roles/compute.networkAdmin) networksecurity.addressGroups.*
주소 그룹 탐색 및 보기 Compute 네트워크 사용자(roles/compute.networkUser) networksecurity.addressGroups.list

networksecurity.addressGroups.get

networksecurity.addressGroups.use

특정 IAM 권한이 포함된 역할에 대한 자세한 내용은 IAM 역할 및 권한 색인을 참고하세요.

프로젝트 범위 주소 그룹 사용

다음 섹션에서는 프로젝트 범위 주소 그룹을 만들고 수정하는 방법과 보안 정책에서 프로젝트 범위 주소 그룹을 사용하는 방법을 설명합니다.

프로젝트 범위 주소 그룹 만들기 또는 수정하기

다음 섹션에서는 프로젝트 범위 주소 그룹을 만드는 방법, 프로젝트 범위 주소 그룹에서 주소를 추가하고 삭제하는 방법, 프로젝트 범위 주소 그룹을 삭제하는 방법을 설명합니다.

프로젝트 범위 주소 그룹 만들기

주소 그룹을 만들 때 --capacity--type 플래그를 사용하여 용량과 IP 주소 버전을 각각 지정해야 합니다. 주소 그룹을 만든 후에는 이러한 값을 변경할 수 없습니다.

또한 Google Cloud Armor의 최대 용량은 Cloud Next Generation Firewall와 같은 다른 제품의 최대 용량보다 클 수 있습니다. 따라서 제품 2개 이상에서 같은 주소 그룹을 사용하려면 용량을 해당 제품 중 가장 낮은 최대 용량보다 작거나 같도록 설정해야 합니다.

콘솔

  1. Google Cloud 콘솔에서 주소 그룹 페이지로 이동합니다.

    주소 그룹으로 이동

  2. 프로젝트 선택기 메뉴에서(가능한 경우) 프로젝트를 선택합니다.
  3. 주소 그룹 만들기를 클릭합니다.
  4. 이름 필드에 이름을 입력합니다.
  5. (선택사항): 설명 필드에 설명을 추가합니다.
  6. 범위전역을 선택합니다.
  7. 유형IPv4 또는 IPv6를 선택합니다.
  8. 용도Cloud Armor를 선택합니다. 또는 Cloud 차세대 방화벽 정책에서 주소 그룹을 사용하려는 경우 방화벽 및 Cloud Armor를 선택합니다.

    용도 선택에 대한 자세한 내용은 주소 그룹 사양을 참조하세요.

  9. 용량 필드에 주소 그룹 용량을 입력합니다.

  10. IP 주소 필드에서 주소 그룹에 포함할 IP 주소나 IP 범위를 쉼표로 구분하여 나열합니다. 예를 들면 1.1.1.0/24,1.2.0.0입니다.

    IP 주소 또는 IP 범위의 수는 구성된 용량을 초과할 수 없습니다.

  11. 만들기를 클릭합니다.

gcloud

다음 예시 gcloud network-security address-groups create 명령어를 사용하여 IPv4 주소 용량이 1,000개인 GROUP_NAME이라는 주소 그룹을 만듭니다. 이 주소는 Google Cloud Armor 또는 Cloud NGFW에서 모두 사용할 수 있습니다.

 gcloud network-security address-groups create GROUP_NAME \
     --location global \
     --description  "address group description" \
     --capacity 1000 \
     --type IPv4 \
     --purpose DEFAULT,CLOUD_ARMOR

또는 CLOUD_ARMOR 전용으로 설정하여 더 큰 용량을 가진 주소 그룹을 생성할 수 있습니다. 다음 예시에서는 IPv6 IP 주소 범위 용량이 10,000개인 주소 그룹을 만듭니다.

 gcloud network-security address-groups create GROUP_NAME \
     --location global \
     --description  "address group description" \
     --capacity 10000 \
     --type IPv6 \
     --purpose CLOUD_ARMOR

프로젝트 범위 주소 그룹에 항목 추가

주소 그룹을 만든 후 Google Cloud 콘솔이나 gcloud network-security address-groups add-items 명령어를 사용하여 항목을 추가할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 주소 그룹 페이지로 이동합니다.

    주소 그룹으로 이동

  2. 프로젝트 선택기 메뉴에서(가능한 경우) 프로젝트를 선택합니다.
  3. 주소 그룹을 수정하려면 주소 그룹 이름을 클릭합니다.
  4. 수정을 클릭합니다.
  5. IP 주소 필드에서 새 항목을 쉼표로 구분된 IP 주소 목록에 추가합니다. 또는 주소 가져오기를 클릭하여 IP 주소 목록이 포함된 CSV 파일을 업로드할 수 있습니다.
  6. 저장을 클릭합니다.

gcloud

다음 예시에서는 IP 주소 192.168.1.2, 192.168.1.8, 192.168.1.9를 주소 그룹 GROUP_NAME에 추가합니다. --item 플래그와 함께 쉼표로 구분된 항목 목록을 제공합니다.

 gcloud network-security address-groups add-items GROUP_NAME \
     --location global \
     --items 192.168.1.2,192.168.1.8,192.168.1.9

프로젝트 범위 주소 그룹에서 항목 삭제

Google Cloud 콘솔이나 gcloud network-security address-groups remove-items 명령어를 사용하여 주소 그룹에서 항목을 삭제할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 주소 그룹 페이지로 이동합니다.

    주소 그룹으로 이동

  2. 프로젝트 선택기 메뉴에서(가능한 경우) 프로젝트를 선택합니다.
  3. 주소 그룹을 수정하려면 주소 그룹 이름을 클릭합니다.
  4. 수정을 클릭합니다.
  5. IP 주소 필드의 쉼표로 구분된 IP 주소 목록에서 삭제할 항목을 삭제합니다.
  6. 저장을 클릭합니다.

gcloud

다음 명령어는 이전 명령어에서 추가한 IP 주소 192.168.1.2, 192.168.1.8, 192.168.1.9를 삭제합니다.

 gcloud network-security address-groups remove-items GROUP_NAME \
     --location global \
     --items 192.168.1.2,192.168.1.8,192.168.1.9

프로젝트 범위 주소 그룹 삭제

방화벽 정책이나 보안 정책을 포함하여 리소스에서 주소 그룹을 참조하는 경우에는 주소 그룹을 삭제할 수 없습니다. 주소 그룹을 삭제하려면 다음 단계를 수행합니다.

콘솔

  1. Google Cloud 콘솔에서 주소 그룹 페이지로 이동합니다.

    주소 그룹으로 이동

  2. 프로젝트 선택기 메뉴에서(가능한 경우) 프로젝트를 선택합니다.
  3. 삭제하려는 주소 그룹 옆에 있는 체크박스를 선택합니다. 방화벽이나 보안 정책에서 선택한 주소 그룹을 참조하지 않는지 확인합니다.
  4. 삭제를 클릭하고 한 번 더 삭제를 클릭하여 확인합니다.

gcloud

다음 예시에서는 gcloud network-security address-groups delete 명령어를 사용하여 GROUP_NAME이라는 주소 그룹을 삭제합니다.

 gcloud network-security address-groups delete GROUP_NAME \
     --location global

보안 정책에서 프로젝트 범위 주소 그룹 사용

주소 그룹을 만들고 IP 주소를 추가한 후에는 이를 기존의 Google Cloud Armor 백엔드 보안 정책에 사용할 수 있습니다. 다음 예시에서는 주소 그룹을 사용하는 두 가지 방법을 보여줍니다.

IP 주소 그룹 거부

이 예시에서는 악성으로 알려진 IP 주소가 10,000개 포함된 MALICIOUS_IPS라는 IP 주소 그룹이 있다고 가정해 보겠습니다. 다음 일치 조건으로 단일 보안 정책 deny 규칙을 사용하여 이러한 IP 주소를 모두 거부할 수 있습니다.

evaluateAddressGroup('MALICIOUS_IPS', origin.ip)

여러 보안 정책에서 IP 주소 범위 그룹 재사용

이 예시에서는 이전 예시와 동일한 IP 주소 10,000개 목록이 있지만 일부 IP 주소를 웹 크롤러라고 가정해 보겠습니다. 일부 백엔드 서비스에서 이러한 IP 주소를 모두 차단하려고 하지만 검색엔진 최적화(SEO)를 개선하기 위해 웹 크롤러가 다른 백엔드 서비스에 액세스하도록 하려고 합니다. 다음 단계에 따라 BACKEND_SERVICE_1에 대한 모든 주소의 액세스를 거부하고 IP 주소 범위 66.249.77.32/2766.249.77.64/27BACKEND_SERVICE_2에 액세스하도록 허용합니다.

  1. POLICY_1이라는 백엔드 보안 정책을 만들고 BACKEND_SERVICE_1에 연결합니다.
  2. POLICY_1에서 다음 일치 조건을 사용하여 deny 규칙을 만듭니다.

    evaluateAddressGroup('MALICIOUS_IPS', origin.ip)
    
  3. POLICY_2라는 두 번째 백엔드 보안 정책을 만들고 BACKEND_SERVICE_2에 연결합니다.

  4. POLICY_2에서 66.249.77.32/2766.249.77.64/27을 제외하는 다음 일치 조건을 사용하여 deny 규칙을 만듭니다.

    evaluateAddressGroup('MALICIOUS_IPS', origin.ip, [66.249.77.32/27, 66.249.77.64/27])
    

주소 그룹을 사용하여 사용자 IP 주소와 일치시키기

주소 그룹을 사용하여 발신 클라이언트('사용자') IP 주소와 일치시키려면 보안 정책에서 userIpRequestHeaders[]를 구성해야 합니다.

다음 조건에서는 origin.user_ip 값이 기본적으로 origin.ip 값으로 설정되므로 요청의 소스 IP 주소가 수신되고 발신 클라이언트의 IP 주소는 수신되지 않습니다.

  • userIpRequestHeaders[] 옵션을 구성하지 않습니다.
  • 구성된 헤더가 없습니다.
  • 구성된 헤더에 잘못된 IP 주소 값이 포함되어 있습니다.

이 예시에서는 악성으로 알려진 IP 주소가 10,000개 포함된 MALICIOUS_IPS라는 IP 주소 그룹이 있다고 가정해 보겠습니다. 또한 헤더에 원본 클라이언트에 대한 정보가 포함된 업스트림 프록시를 사용합니다. 다음 일치 조건으로 단일 보안 정책 deny 규칙을 사용하여 이러한 IP 주소를 모두 거부할 수 있습니다.

evaluateAddressGroup('MALICIOUS_IPS', origin.user_ip)

사용자 IP 주소에 대한 자세한 내용은 속성을 참고하세요.

조직 범위 주소 그룹 사용

다음 섹션에서는 조직 범위 주소 그룹을 만들고 수정하는 방법과 보안 정책에서 조직 범위 주소 그룹을 사용하는 방법을 설명합니다.

조직 범위 주소 그룹 만들기 또는 수정하기

조직 범위 주소 그룹은 서비스 수준 보안 정책과 계층식 보안 정책 모두에서 사용할 수 있습니다.

다음 섹션에서는 조직 범위 주소 그룹을 만드는 방법, 조직 범위 주소 그룹에서 주소를 추가하고 삭제하는 방법, 조직 범위 주소 그룹을 삭제하는 방법을 설명합니다.

조직 범위 주소 그룹 만들기

주소 그룹을 만들 때 --capacity--type 플래그를 사용하여 용량과 IP 주소 버전을 각각 지정해야 합니다. 주소 그룹을 만든 후에는 이러한 값을 변경할 수 없습니다.

또한 Google Cloud Armor의 최대 용량은 Cloud Next Generation Firewall와 같은 다른 제품의 최대 용량보다 클 수 있습니다. 따라서 제품 2개 이상에서 같은 주소 그룹을 사용하려면 용량을 해당 제품 중 가장 낮은 최대 용량보다 작거나 같도록 설정해야 합니다.

콘솔

  1. Google Cloud 콘솔에서 주소 그룹 페이지로 이동합니다.

    주소 그룹으로 이동

  2. 프로젝트 선택기 메뉴에서(가능한 경우) 조직을 선택합니다.
  3. 주소 그룹 만들기를 클릭합니다.
  4. 이름 필드에 이름을 입력합니다.
  5. 선택사항: 설명 필드에 설명을 추가합니다.
  6. 범위전역을 선택합니다.
  7. 유형IPv4 또는 IPv6를 선택합니다.
  8. 용도Cloud Armor를 선택합니다. 또는 Cloud 차세대 방화벽 정책에서 주소 그룹을 사용하려는 경우 Cloud NGFW 및 Cloud Armor를 선택합니다.

    주소 그룹의 용도 선택에 대한 자세한 내용은 사양을 참고하세요.

  9. 용량 필드에 주소 그룹 용량을 입력합니다.

  10. IP 주소 필드에서 주소 그룹에 포함할 IP 주소나 IP 범위를 쉼표로 구분하여 나열합니다. 예를 들면 1.1.1.0/24,1.2.0.0입니다.

    IP 주소 또는 IP 범위의 수는 구성된 용량을 초과할 수 없습니다.

  11. 만들기를 클릭합니다.

gcloud

다음 예시 gcloud network-security org-address-groups create 명령어를 사용하여 IPv4 주소 용량이 1,000개인 GROUP_NAME이라는 주소 그룹을 만듭니다. 이 주소는 Google Cloud Armor 또는 Cloud NGFW에서 모두 사용할 수 있습니다.

 gcloud beta network-security org-address-groups create GROUP_NAME \
     --location global \
     --description  "org address group description" \
     --capacity 1000 \
     --type IPv4 \
     --purpose DEFAULT,CLOUD_ARMOR

또는 CLOUD_ARMOR 전용으로 설정하여 더 큰 용량을 가진 조직 범위 주소 그룹을 생성할 수 있습니다. 다음 예시에서는 IPv6 IP 주소 범위 용량이 10,000개인 주소 그룹을 만듭니다.

 gcloud beta network-security org-address-groups create GROUP_NAME \
     --location global \
     --description  "org address group description" \
     --capacity 10000 \
     --type IPv6 \
     --purpose CLOUD_ARMOR

조직 범위 주소 그룹에 항목 추가

조직 범위 주소 그룹을 만든 후 Google Cloud 콘솔이나 gcloud network-security org-address-groups add-items 명령어를 사용하여 항목을 추가할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 주소 그룹 페이지로 이동합니다.

    주소 그룹으로 이동

  2. 프로젝트 선택기 메뉴에서(가능한 경우) 조직을 선택합니다.
  3. 주소 그룹을 수정하려면 주소 그룹 이름을 클릭합니다.
  4. 수정을 클릭합니다.
  5. IP 주소 필드에서 새 항목을 쉼표로 구분된 IP 주소 목록에 추가합니다. 또는 주소 가져오기를 클릭하여 IP 주소 목록이 포함된 CSV 파일을 업로드할 수 있습니다.
  6. 저장을 클릭합니다.

gcloud

다음 예시에서는 IP 주소 192.168.1.2, 192.168.1.8, 192.168.1.9를 조직 범위 주소 그룹 GROUP_NAME에 추가합니다. --items 플래그와 함께 쉼표로 구분된 항목 목록을 제공합니다.

 gcloud network-security org-address-groups add-items GROUP_NAME \
     --location global \
     --items 192.168.1.2,192.168.1.8,192.168.1.9

조직 범위 주소 그룹에서 항목 삭제

Google Cloud 콘솔 또는 gcloud network-security org-address-groups remove-items 명령어를 사용하여 조직 범위 주소 그룹에서 항목을 삭제할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 주소 그룹 페이지로 이동합니다.

    주소 그룹으로 이동

  2. 프로젝트 선택기 메뉴에서(가능한 경우) 조직을 선택합니다.
  3. 주소 그룹을 수정하려면 주소 그룹 이름을 클릭합니다.
  4. 수정을 클릭합니다.
  5. IP 주소 필드의 쉼표로 구분된 IP 주소 목록에서 삭제할 항목을 삭제합니다.
  6. 저장을 클릭합니다.

gcloud

다음 명령어는 이전 명령어에서 추가한 IP 주소 192.168.1.2, 192.168.1.8, 192.168.1.9를 삭제합니다.

 gcloud network-security org-address-groups remove-items GROUP_NAME \
     --location global \
     --items 192.168.1.2,192.168.1.8,192.168.1.9

조직 범위 주소 그룹 삭제

방화벽 정책이나 보안 정책을 포함하여 리소스에서 조직 범위 주소 그룹을 참조하는 경우에는 해당 그룹을 삭제할 수 없습니다. 주소 그룹을 삭제하려면 다음 단계를 수행합니다.

콘솔

  1. Google Cloud 콘솔에서 주소 그룹 페이지로 이동합니다.

    주소 그룹으로 이동

  2. 프로젝트 선택기 메뉴에서(가능한 경우) 조직을 선택합니다.
  3. 삭제하려는 주소 그룹 옆에 있는 체크박스를 선택합니다. 방화벽이나 보안 정책에서 선택한 주소 그룹을 참조하지 않는지 확인합니다.
  4. 삭제를 클릭하고 한 번 더 삭제를 클릭하여 확인합니다.

gcloud

다음 예시에서는 gcloud network-security org-address-groups delete 명령어를 사용하여 GROUP_NAME이라는 주소 그룹을 삭제합니다.

 gcloud network-security org-address-groups delete GROUP_NAME \
     --location global

보안 정책에서 조직 범위 주소 그룹 사용

주소 그룹을 만들고 IP 주소를 추가한 후에는 이를 기존의 Google Cloud Armor 백엔드 보안 정책에 사용할 수 있습니다. 다음 예시에서는 주소 그룹을 사용하는 두 가지 방법을 보여줍니다.

조직의 모든 백엔드 서비스에 대해 IP 주소 그룹 거부

이 예시에서는 악성으로 알려진 IP 주소가 10,000개 포함된 MALICIOUS_IPS라는 조직 범위 IP 주소 그룹이 있다고 가정해 보겠습니다. 단일 계층적 보안 정책을 사용하여 조직의 모든 백엔드 서비스에 대해 이러한 IP 주소를 모두 거부할 수 있습니다. 계층적 보안 정책을 만들고 다음 일치 조건이 있는 deny 규칙을 추가합니다.

evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip)

마지막으로 계층적 보안 정책을 조직의 모든 백엔드 서비스에 연결하여 POLICY_NAME을 계층적 보안 정책의 이름으로 바꾸고 ORGANIZATION_ID를 조직의 ID로 바꿉니다.

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

조직 내 모든 백엔드 서비스에 IP 주소 범위 그룹 재사용

이 예시에서는 이전 예시와 동일한 IP 주소 10,000개 목록이 있지만 일부 IP 주소를 웹 크롤러라고 가정해 보겠습니다. 웹 크롤러가 아닌 IP 주소가 조직의 모든 백엔드 서비스에 액세스하지 못하도록 차단하고 싶지만, 프로젝트 범위 보안 정책을 통해 웹 크롤러가 검색엔진 최적화(SEO)를 개선하기 위해 백엔드 서비스에 액세스할 수 있는지 여부를 결정하고 싶습니다.

다음 단계에 따라 BACKEND_SERVICE_1에 대한 모든 주소의 액세스를 거부하고 IP 주소 범위 66.249.77.32/2766.249.77.64/27BACKEND_SERVICE_2에 액세스하도록 허용합니다.

  1. BACKEND_POLICY_1이라는 백엔드 보안 정책을 만듭니다.
  2. MALICIOUS_IPS의 모든 IP 주소를 차단하는 다음 일치 조건을 사용하여 deny 규칙을 BACKEND_POLICY_1에 추가합니다.

    evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip)
    
  3. 다음 명령어를 사용하여 BACKEND_POLICY_1BACKEND_SERVICE_1과 연결합니다.

     gcloud compute backend-services update BACKEND_SERVICE_1 \
         --security-policy BACKEND_POLICY_1
    
  4. BACKEND_POLICY_2라는 두 번째 백엔드 보안 정책을 만듭니다.

  5. 66.249.77.32/2766.249.77.64/27을 제외한 MALICIOUS_IPS의 모든 IP 주소를 차단하는 다음 일치 조건을 사용하여 deny 규칙을 BACKEND_POLICY_2에 추가합니다.

    evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.ip, [`66.249.77.32/27`, `66.249.77.64/27`])
    
  6. 다음 명령어를 사용하여 BACKEND_POLICY_2BACKEND_SERVICE_2와 연결합니다. ORG_ID를 조직의 ID로 바꿉니다.

     gcloud compute backend-services update BACKEND_SERVICE_2 \
         --security-policy BACKEND_POLICY_2
    

주소 그룹을 사용하여 조직의 모든 백엔드 서비스에 대해 사용자 IP 주소와 일치시키기

이 예시에서는 악성으로 알려진 IP 주소가 10,000개 포함된 MALICIOUS_IPS라는 IP 주소 그룹이 있다고 가정해 보겠습니다. 또한 헤더에 원본 클라이언트 IP 주소에 대한 정보가 포함된 업스트림 프록시를 사용합니다. 다음 일치 조건으로 단일 보안 정책 deny 규칙을 사용하여 이러한 IP 주소가 조직의 모든 백엔드 서비스에 액세스하는 것을 거부할 수 있습니다.

evaluateOrganizationAddressGroup('MALICIOUS_IPS', origin.user_ip)

사용자 IP 주소에 대한 자세한 내용은 속성을 참고하세요.

다음 단계