주소 그룹 구성

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

IAM 역할

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

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

작업 IAM 역할 이름 IAM 권한
주소 그룹 만들기 및 관리 compute.networkAdmin

compute.securityAdmin

networksecurity.addressGroups.*
주소 그룹 탐색 및 보기 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입니다.

  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개 포함된 BAD_IPS라는 IP 주소 그룹이 있다고 가정해 보겠습니다. 다음 일치 조건으로 단일 보안 정책 deny 규칙을 사용하여 이러한 IP 주소를 모두 거부할 수 있습니다.

evaluateAddressGroup('BAD_IPS', origin.ip)

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

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

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

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

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

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

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

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

evaluateAddressGroup('BAD_IPS', origin.user_ip)

사용자 IP 주소에 대한 자세한 내용은 규칙 언어 속성을 참조하세요.

다음 단계