보안 및 할당량 적용 사용 설정

이 페이지는 ApigeeApigee Hybrid에 적용됩니다.

Apigee Edge 문서 보기

이 페이지에서는 Kubernetes용 Apigee Operator에서 사용할 수 있는 기본 보안 및 할당량 적용 옵션을 사용 설정하는 방법을 설명합니다.

시작하기 전에

이 작업을 시작하기 전에 다음 단계를 완료해야 합니다.

  • Kubernetes용 Apigee Operator를 설치합니다. 설치 안내는 Kubernetes용 Apigee Operator 설치를 참고하세요.
  • 트래픽 서비스 확장 프로그램을 만듭니다. 이 단계를 완료하려면 ApigeeBackendService 또는 APIMExtensionPolicy를 사용하면 됩니다. APIMExtensionPolicy를 사용하여 트래픽 확장 프로그램을 만드는 방법에 대한 자세한 내용은 APIMExtensionPolicy 만들기를 참고하세요. ApigeeBackendService를 사용하여 트래픽 확장 프로그램을 만드는 방법에 대한 자세한 내용은 ApigeeBackendService 만들기를 참고하세요.

ApigeeBackendService 또는 APIMExtensionPolicy를 사용하여 GKE 게이트웨이의 트래픽 서비스 확장 프로그램을 만들었는지 여부와 관계없이 이 둘러보기의 단계를 완료하여 지원 APIMExtensionPolicy에 추가된 기본 API 키 및 할당량 정책을 사용 설정해야 합니다.

필요한 역할

Kubernetes용 Apigee Operator 설치의 설명대로 서비스 계정에 필요한 역할을 할당한 경우 이러한 작업을 완료하는 데 필요한 추가 IAM 역할이나 권한은 없습니다.

Kubernetes에서 기본 제공되는 역할 기반 액세스 제어(RBAC) 메커니즘을 사용하여 Google Kubernetes Engine 클러스터의 리소스에 대한 작업을 승인할 수 있습니다. 자세한 내용은 역할 기반 액세스 제어를 사용하여 클러스터의 작업 승인을 참조하세요.

개요

다음 섹션에서는 Kubernetes용 Apigee Operator에서 제공되는 기본 보안 및 할당량 적용 옵션을 사용 설정하는 방법을 설명합니다. 이 둘러보기에서는 다음 작업을 수행합니다.

  1. API 제품 정의
  2. API 작업 세트 정의
  3. Apigee 서비스 확장 프로그램 테스트
  4. Google Cloud 콘솔에서 Apigee API 애널리틱스 보기

API 제품 및 API 작업 집합을 정의하는 데 필요한 단계는 ApigeeBackendService 또는 APIMExtensionPolicy을 사용하여 GKE 게이트웨이의 트래픽 확장 프로그램을 만들었는지에 따라 약간 다릅니다.

API 제품 정의

이 단계에서는 API 키 적용 및 할당량 정책을 관리하는 데 사용될 API 제품을 정의합니다.

APIMExtensionPolicy 사용

API 제품을 정의합니다.

  1. apim 네임스페이스에 api-product.yaml이라는 새 파일을 만듭니다.
  2. 다음 콘텐츠를 새 파일에 복사합니다.
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: APIMExtensionPolicy
            group: apim.googleapis.com
            namespace: apim
        attributes:
          - name: access
            value: private
  3. 다음 명령어를 사용하여 게이트웨이에 파일을 적용합니다.
    kubectl -n apim apply -f api-product.yaml

ApigeeBackendService 사용

API 제품을 정의합니다.

  1. apim 네임스페이스에 api-product.yaml이라는 새 파일을 만듭니다.
  2. 다음 콘텐츠를 새 파일에 복사합니다.
    # api-product.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIProduct
      metadata:
        name: api-product
        namespace: apim
      spec:
        approvalType: auto
        description: Http bin GET calls
        displayName: api-product
        enforcementRefs:
          - name: global-ext-lb1-apim-policy
            kind: ApigeeBackendService
            group: apim.googleapis.com
            namespace: default
        attributes:
          - name: access
            value: private
  3. 다음 명령어를 사용하여 게이트웨이에 파일을 적용합니다.
    kubectl -n default apply -f api-product.yaml

API 작업 세트 정의

이 단계에서는 나머지 작업 시행을 관리하는 데 사용될 API 작업 세트를 정의합니다.

APIMExtensionPolicy 사용

이전 단계에서 만든 API 제품의 API 작업 세트를 정의합니다.

  1. apim 네임스페이스에 apim-policies.yaml이라는 새 파일을 만듭니다.
  2. 다음 콘텐츠를 새 파일에 복사합니다. 이 파일은 이전 단계에서 정의된 API 제품의 할당량 정책과 사용 가능한 REST 작업을 정의합니다.
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: apim
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: apim
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. 게이트웨이에 파일을 적용합니다.
    kubectl -n apim apply -f apim-policies.yaml

ApigeeBackendService 사용

이전 단계에서 만든 API 제품의 API 작업 세트를 정의합니다.

  1. default 네임스페이스에 apim-policies.yaml이라는 새 파일을 만듭니다.
  2. 다음 콘텐츠를 새 파일에 복사합니다. 이 파일은 이전 단계에서 정의된 API 제품의 할당량 정책과 사용 가능한 REST 작업을 정의합니다.
    # apim-policies.yaml
      apiVersion: apim.googleapis.com/v1
      kind: APIOperationSet
      metadata:
        name: item-set
        namespace: default
      spec:
        apiProductRefs:
          - name: api-product
            kind: APIProduct
            group: apim.googleapis.com
            namespace: default
        quota:
          limit: 10
          interval: 1
          timeUnit: minute
        restOperations:
          - name: GetItems
            path: /get
            methods:
              - GET
  3. 게이트웨이에 파일을 적용합니다.
    kubectl -n default apply -f apim-policies.yaml

Apigee 서비스 확장 프로그램 테스트

이 단계에서는 Google Cloud 콘솔의 Apigee UI를 사용하여 Apigee 서비스 확장 프로그램과 게이트웨이에 적용된 Apigee 확장 프로그램 정책을 테스트합니다.

테스트 설정

테스트에 필요한 API 리소스를 설정합니다.

  1. Google Cloud 콘솔에서 Apigee API 관리 페이지로 이동합니다.

    Apigee API 관리

  2. Kubernetes용 Apigee Operator를 설치한 Apigee 조직을 선택합니다.
  3. 개발자를 만듭니다.
    1. 배포 > 개발자를 선택합니다.
    2. 개발자 페이지에서 + 만들기를 클릭합니다.
    3. 개발자 추가 페이지에서 원하는 값을 사용하여 필수 필드를 작성합니다.
    4. 추가를 클릭합니다.
  4. 앱을 만듭니다.
    1. 배포>을 선택합니다.
    2. 페이지에서 + 만들기를 클릭합니다.
    3. 앱 만들기 페이지의 앱 세부정보 섹션에서 다음 값을 사용하여 필수 필드를 작성합니다.
      • 앱 이름: demo-app
      • 개발자: 이전 단계에서 만든 개발자 또는 목록에 있는 다른 개발자를 선택합니다.
    4. 앱 사용자 인증 정보 섹션에서 + 사용자 인증 정보 추가를 클릭합니다.
    5. 인증 정보 섹션에서 인증 정보 세부정보 섹션에 다음 값을 입력하여 필수 필드를 완료합니다.
      • 사용자 인증 정보 이름: demo-credential
      • 사용자 인증 정보 유형: API 키 선택
    6. 만들기를 클릭합니다.
    7. 제품 섹션에서 + 제품 추가를 클릭합니다.
    8. 이전 단계에서 만든 api-product-1을 선택합니다.
    9. 추가를 클릭합니다.
    10. 만들기를 클릭합니다.
  5. 앱 세부정보 페이지의 사용자 인증 정보 섹션에서 를 클릭하여 값을 표시합니다.

    Key 값을 복사합니다. 이 키는 이후 단계에서 서비스에 API를 호출하는 데 사용됩니다.

  6. 앱 세부정보 페이지의 사용자 인증 정보 섹션에서 를 클릭하여 앱 보안 비밀 값을 표시합니다.

    앱 보안 비밀 값을 복사합니다. 이 값은 이후 단계에서 액세스 토큰을 생성하는 데 사용됩니다.

API 키 적용 테스트

다음 명령어를 사용하여 이전 단계에서 획득한 API 키를 사용하여 게이트웨이에 요청을 보냅니다.

curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

각 항목의 의미는 다음과 같습니다.

  • GATEWAY_IP_ADDRESS는 게이트웨이의 IP 주소입니다. 다음 명령어를 사용하여 게이트웨이 IP 주소를 검색할 수 있습니다. 여기서 GATEWAY_NAME은 게이트웨이 이름입니다.
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME은 게이트웨이의 HTTPRoute에 정의된 호스트 이름입니다.
  • API_KEY테스트 설정에서 획득한 API 키 값입니다.

요청이 성공하고 다음과 유사한 응답이 반환됩니다.

{
  "args": {},
  "headers": {
    "Accept": "*/*",
    "Host": "apigee-apim-operator-test.apigee.net",
    "User-Agent": "curl/8.7.1",
    "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt",
    "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739"
  },
  "origin": "34.54.193.72",
  "url": "https://34.54.193.72/get"
}

테스트 할당량 시행

APIMExtensionPolicy에 정의된 할당량 적용을 테스트하려면 이전 단계의 요청을 게이트웨이로 1분 이내에 10번 전송합니다.

다음 스크립트를 실행하여 요청을 생성할 수 있습니다.

#!/bin/sh
for i in $(seq 1 11); do
    curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
    sleep 1
done

각 항목의 의미는 다음과 같습니다.

  • GATEWAY_IP_ADDRESS는 게이트웨이의 IP 주소입니다. 다음 명령어를 사용하여 게이트웨이 IP 주소를 검색할 수 있습니다. 여기서 GATEWAY_NAME은 게이트웨이 이름입니다.
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME은 게이트웨이의 HTTPRoute에 정의된 호스트 이름입니다.
  • API_KEY테스트 설정에서 획득한 API 키 값입니다.

이 작업은 할당량 위반을 트리거하고 다음과 유사한 오류를 발생시켜야 합니다.

{"fault":{"faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}

나머지 작업 시행 테스트

나머지 작업 시행을 테스트하려면 다음 명령어를 사용하여 API 작업 세트에 없는 URL을 사용하여 게이트웨이에 요청을 전송합니다.

curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"

각 항목의 의미는 다음과 같습니다.

  • GATEWAY_IP_ADDRESS는 게이트웨이의 IP 주소입니다. 다음 명령어를 사용하여 게이트웨이 IP 주소를 검색할 수 있습니다. 여기서 GATEWAY_NAME은 게이트웨이 이름입니다.
    kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
  • HOST_NAME은 게이트웨이의 HTTPRoute에 정의된 호스트 이름입니다.
  • API_KEY테스트 설정에서 획득한 API 키 값입니다.

다음과 유사한 응답이 표시되면서 요청이 실패합니다.

{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}

Google Cloud 콘솔에서 Apigee API 애널리틱스 보기

Google Cloud 콘솔에서 Apigee API 애널리틱스를 사용하여 GKE 게이트웨이와 APIMExtensionPolicy에서 처리하는 API 트래픽을 볼 수 있습니다.

  1. Google Cloud 콘솔에서 Apigee API 관리 페이지로 이동합니다.

    Apigee API 관리

  2. Kubernetes용 Apigee Operator를 설치한 Apigee 조직을 선택합니다.
  3. 측면 탐색 메뉴에서 분석 > API 측정항목을 선택합니다.
  4. API 프록시 성능 탭에서 선택적 설치 단계 Apigee 환경 만들기에서 만든 환경 또는 설치 중에 Kubernetes용 Apigee Operator가 만든 환경을 선택합니다. 환경 이름은 apigee-ext-proc-enabled-env 프리픽스로 시작합니다.
  5. 기록된 API 트래픽을 확인합니다.

문제 해결

Kubernetes용 Apigee Operator에서 API 관리 정책을 사용할 때 문제가 발생하면 Kubernetes용 Apigee Operator 문제 해결에서 일반적인 오류의 해결 방법을 참조하세요.

다음 단계

정책을 추가하려면 GKE 게이트웨이에 정책 추가를 참고하세요.