4.2. 3scale API Management 표준 정책의 정책 체인


각 API 제품에 대해 정책 체인을 지정할 수 있습니다. 정책 체인은 다음을 수행합니다.

  • APIcast가 요청에 적용되는 정책을 지정합니다.
  • 해당 정책에 대한 구성 정보를 제공합니다.
  • APIcast가 정책을 적용하는 순서를 결정합니다.

체인에서 정책을 올바르게 정렬하려면 APIcast가 API 소비자 요청에 정책을 적용하는 방법을 이해하는 것이 중요합니다.

4.2.1. APIcast NGINX 단계 3scale API Management 정책을 처리하는 방법

3scale API 게이트웨이 또는 APIcast는 NGINX 프록시 웹 서버를 사용하여 정책을 적용합니다. APIcast가 API 소비자에서 요청을 수신하면 APIcast는 정렬된 NGINX 단계로 요청을 처리합니다. 각 NGINX 단계에서 APIcast는 이러한 정책을 적용하여 원래 요청을 수정할 수 있습니다.

  • 업스트림 API 정책 체인의 정책입니다. 정책 체인은 정렬된 정책 목록입니다. 기본적으로 업스트림 API의 정책 체인에는 3scale APIcast 정책이 포함됩니다. API 공급자는 3scale 제품의 정책 체인에 정책을 추가할 수 있습니다. APIcast는 업스트림 API 정책 체인의 정책을 해당 업스트림 API로만 전송된 API 소비자 요청에 적용합니다.
  • 글로벌 3scale 정책 체인의 정책입니다. API 공급자는 3scale 환경 변수를 설정하여 글로벌 정책 체인을 업데이트할 수 있습니다. APIcast는 글로벌 정책 체인의 정책을 모든 API 소비자 요청에 적용합니다.

동일한 정책이 업스트림 API 정책 체인에 있고 글로벌 정책 체인에 있는 경우 업스트림 API 정책 체인의 정책 구성이 우선합니다.

APIcast가 모든 NGINX 단계에서 필요한 처리를 수행한 후 APIcast는 결과를 업스트림 API로 보냅니다. 따라서 원하는 동작을 수행하려면 처리에서 API 소비자 요청을 수정할 수 있으므로 NGINX 단계의 정책을 처리하는 순서를 이해하는 것이 중요합니다.

NGINX 단계에 대한 주문 및 설명

APIcast가 API 소비자로부터 요청을 수신하면 APIcast는 업스트림 API의 정책 체인과 글로벌 정책 체인에 정책을 적용하여 요청을 처리합니다. 각 3scale 정책은 하나 이상의 기능을 정의합니다. APIcast는 정렬된 NGINX 단계에서 정책 기능을 실행합니다. 각 단계에서 NGINX는 적용되는 정책에 정의된 모든 함수를 실행하고 해당 단계에서 실행을 지정합니다. 다음 표에는 정책 기능을 실행하는 NGINX 단계가 나열되어 있습니다. 이 표에 나열되지 않은 추가 NGINX 단계는 정책 체인의 정책 순서의 영향을 받지 않는 처리를 수행합니다.

NGINX 단계 순서대로이 단계에서의 처리 설명

재작성

요청의 대상 URI를 수정하는 모든 함수를 실행합니다.

액세스

클라이언트의 권한을 확인하여 요청을 수행하는 모든 기능을 실행합니다.

콘텐츠

업스트림 API로 전송할 요청 콘텐츠를 생성합니다.

NGINX는 콘텐츠 단계에서 하나의 정책만 적용합니다. 정책 체인에서 둘 이상의 정책이 요청 콘텐츠 NGINX에서 작동하는 경우 체인에서 가장 빠른 정책만 적용됩니다. 기본 제공 3scale APIcast 정책이 항상 정책 체인에 있으며 콘텐츠 단계에서 NGINX 처리가 필요하기 때문에 이해하는 것이 중요합니다.

예를 들어 3scale APIcast 정책과 Upstream 정책 모두 요청을 업데이트하여 업스트림 API의 경로를 지정합니다. NGINX는 이러한 기능을 콘텐츠 단계에서 처리합니다. 3scale APIcast 정책이 Upstream 정책 이전인 경우 NGINX는 업스트림 API의 구성을 사용하여 수정된 요청에 경로를 추가합니다. 3scale APIcast 정책 이전의 Upstream 정책이 있는 경우 NGINX는 Upstream 정책 표현식을 평가합니다. 일치하는 경우 NGINX는 수정된 요청에 따라 업스트림 API 경로를 변경합니다.

balancer

모든 로드 밸런싱 기능을 실행합니다.

header_filter

요청 헤더를 처리하는 모든 함수를 실행합니다.

body_filter

요청 본문을 처리하는 모든 함수를 실행합니다.

post_action

NGINX가 헤더 및 본문에서 함수를 실행한 후 요청을 처리하는 모든 함수를 실행합니다.

log

요청에 대한 로그 정보를 생성합니다.

메트릭

Prometheus 끝점에서 수신된 모든 데이터에서 작동합니다.

정책 순서의 영향을 받지 않는 처리를 수행하는 NGINX 단계의 예:

  • APIcast가 시작되면 NGINX는 init 단계와 관련된 작업을 실행합니다.
  • APIcast 작업자가 시작되면 NGINX는 init_worker 단계와 관련된 작업을 실행합니다.
  • APIcast가 HTTPS 연결을 종료하면 NGINX는 ssl_certificate 단계와 관련된 작업을 실행합니다.

NGINX가 정책 기능을 실행하는 순서

API 공급자는 3scale 제품에 하나 이상의 정책을 추가하여 정책 체인을 구성할 수 있습니다. 각 단계에서 NGINX는 해당 단계에서 실행을 지정하는 정책 함수만 처리합니다. 각 정책 함수는 하나의 NGINX 단계에서 처리하는 동안 APIcast가 기본 동작을 변경하는 방법을 지정합니다. 예를 들어 header_filter 단계에서 NGINX는 header_filter 를 지정하고 요청 헤더에서 작동하는 함수를 처리합니다. 각 단계에서 NGINX는 정책 체인에 있는 순서대로 관련 기능을 처리합니다.

정책은 컨텍스트 오브젝트를 통해 데이터를 공유할 수 있습니다. 정책은 각 단계에서 컨텍스트 오브젝트를 읽고 수정할 수 있습니다.

NGINX가 정책 기능을 실행하는 순서는 다음에 따라 다릅니다.

  • 정책 체인에서 정책의 위치
  • 특정 정책 기능을 처리하는 NGINX 단계

원하는 동작을 얻으려면 정책 체인의 위치에 따라 정책을 적용한 결과가 달라질 수 있으므로 정책 체인 순서를 올바르게 지정해야 합니다. 다음 다이어그램은 NGINX가 정책을 적용하는 순서의 예를 보여줍니다.

APIcast NGINX 실행 단계 및 3scale 정책 체인

이전 그림에서 정책 A 는 정책 체인에서 먼저 수행됩니다. 그러나 NGINX는 정책 B 에서 함수를 먼저 처리합니다. 해당 기능은 NGINX의 첫 번째 단계인 재작성 단계와 관련이 있기 때문입니다.

이제 정책 A 가 포함된 제품의 정책 체인에서 다음 기능을 사용하여 정책 B 를 고려하십시오.

  • 정책 A 는 다음을 지정합니다.

    • NGINX가 액세스 단계에서 실행되는 함수 A1
    • NGINX가 header_filter 단계에서 실행되도록 하는 함수 A2
  • 정책 B 는 다음을 지정합니다.

    • NGINX가 재작성 단계에서 실행되는 경우 B1 함수
    • header_filter 단계에서 NGINX가 실행되도록 B2 함수

다음 그림은 NGINX가 제품의 정책 기능을 실행하는 순서를 보여줍니다.

APIcast NGINX 실행 단계 및 샘플 3scale 정책 체인

APIcast가 이 제품에 의해 노출된 업스트림 API에 대한 액세스 요청을 수신하면 APIcast는 제품의 정책 체인을 확인하고 다음 표에 설명된 대로 함수를 실행합니다.

NGINX 단계 순서대로이 단계에서 NGINX가 실행되는 함수

재작성

정책 B재작성 단계를 위해 지정하는 B1 함수를 실행합니다.

액세스

정책 A1 에서 액세스 단계를 지정하는 기능 A 1을 실행합니다.

콘텐츠

정책 A 및 정책 B콘텐츠 단계에서 실행하기 위한 기능을 지정하지 않습니다.

balancer

정책 A 및 정책 B밸런서 단계에서 실행하기 위한 기능을 지정하지 않습니다.

header_filter

정책 체인은 정책 A 를 지정한 다음 정책 B 를 지정합니다. 결과적으로 이 단계는 정책 Aheader_filter 단계에 대해 지정하는 함수 A2 를 실행한 다음 정책 B2 에서 header_filter 단계에 지정하는 함수 B 2를 실행합니다.

body_filter

정책 A 및 정책 B 는 이 단계에서 실행하기 위한 기능을 지정하지 않습니다.

post_action

정책 A 및 정책 B 는 이 단계에서 실행하기 위한 기능을 지정하지 않습니다.

log

정책 A 및 정책 B 는 이 단계에서 실행하기 위한 기능을 지정하지 않습니다.

이 예에서 정책 A 는 정책 체인에서 먼저 있지만 정책 B 의 기능은 NGINX가 실행되는 첫 번째 기능입니다. 정책 B 는 다른 단계보다 먼저 NGINX가 재작성 단계에서 처리하는 함수 B1 을 지정하기 때문입니다.

다른 예에서는 이 정책 체인을 고려하십시오.

  1. URL 재작성
  2. 3scale APIcast (모든 제품에 할당된 기본 정책)

URL 재작성 정책은 요청의 대상 경로를 수정합니다. APIcast는 재작성 단계에서 URL 재작성 기능을 실행합니다. 3scale APIcast 정책은 APIcast가 재작성 단계에서 실행되는 함수와 APIcast가 다른 세 단계로 실행되는 함수를 정의합니다. URL 재작성 정책이 먼저3scale APIcast 정책은 다시 작성된 경로에 매핑 규칙을 적용합니다. 3scale APIcast 정책이 첫 번째이고 URL 재작성 정책이 두 번째인 경우 3scale APIcast 정책은 원래 경로에 매핑 규칙을 적용합니다.

4.2.2. 3scale API Management 관리 포털에서 정책 체인 수정

3scale 관리 포털에서 제품의 정책 체인을 APIcast 게이트웨이 구성의 일부로 수정합니다.

프로세스

  1. 3scale에 로그인합니다.
  2. 정책 체인을 구성할 API 제품으로 이동합니다.
  3. [your_product_name] > Integration > Policies 에서 정책 추가 를 클릭합니다.
  4. Policy Chain 섹션에서 화살표 아이콘을 사용하여 정책 체인의 정책을 재정렬합니다.
  5. 정책 체인 업데이트를 클릭하여 정책 체인을 저장합니다.

다음 단계

관리 포털의 왼쪽 탐색 패널에 APIcast로 승격하지 않은 구성 변경 사항이 있음을 나타내는 경고가 있습니다. 정책 체인 업데이트를 Staging APIcast로 승격하고 필요에 따라 업데이트를 테스트합니다. 원하는 동작을 확인한 후 업데이트를 프로덕션 APIcast로 승격합니다. APICAST_CONFIGURATION_CACHE 환경 변수가 0보다 큰 숫자로 설정된 경우 APIcast가 업데이트된 구성을 사용하는 데 몇 초가 걸립니다.

4.2.3. JSON 구성 파일에서 3scale API Management 정책 체인 생성

APIcast의 기본 배포를 사용하는 경우 JSON 구성 파일을 생성하여 외부의 정책 체인을 제어할 수 있습니다.

JSON 구성 파일 정책 체인에는 다음 정보로 구성된 JSON 배열이 포함되어 있습니다.

  • id 값이 있는 services 는 정책 체인이 숫자별로 적용되는 서비스를 지정합니다.
  • policy_chain 개체 및 후속 개체를 포함하는 프록시 오브젝트입니다.
  • policy_chain 개체: 정책 체인을 정의하는 값을 포함합니다.
  • 정책을 식별하고 정책 동작을 구성하는 데 필요한 이름구성 데이터를 모두 지정하는 개별 정책 오브젝트

다음은 사용자 지정 정책 sample_policy_1 및 API 인트로스펙션 표준 정책 token_introspection:에 대한 정책 체인의 예입니다.

{
  "services":[
    {
      "id":1,
      "proxy":{
        "policy_chain":[
          {
            "name":"sample_policy_1", "version": "1.0",
            "configuration":{
              "sample_config_param_1":["value_1"],
              "sample_config_param_2":["value_2"]
            }
          },
          {
            "name": "token_introspection", "version": "builtin",
            "configuration": {
              introspection_url:["https://tokenauthorityexample.com"],
              client_id:["exampleName"],
              client_secret:["secretexamplekey123"]
          },
          {
             "name": "apicast", "version": "builtin",
          }
        ]
      }
    }
  ]
}

모든 정책 체인에는 내장된 정책 apicast 가 포함되어야 합니다. apicast 정책을 정책 체인에 배치하는 위치는 정책 동작에 영향을 미칩니다.

4.2.4. 3scale API Management 표준 정책 기능을 실행하는 NGINX 단계

다음 표에는 NGINX가 해당 단계에서 실행되는 함수를 정의하는 표준 정책이 포함된 주요 NGINX 단계가 나열되어 있습니다. 표에는 NGINX가 처리하는 순서의 단계가 나열됩니다.

정책 체인에는 특정 단계에서 NGINX가 처리하는 두 개 이상의 정책이 포함될 수 있습니다. 이 경우 체인의 정책 순서가 원하는 결과를 얻기 위해 API 요청을 처리하기 위한 올바른 순서인지 확인합니다. 테이블에는 정책이 알파벳순으로 나열됩니다.

NGINX 단계 순서대로이 단계에서 처리되는 함수를 정의하는 표준 정책

재작성

3scale APIcast
3scale Referrer
Anonymous Access
Echo
header Modification
NGINX Filter
업스트림
URL재작성 -Captures CryostatWebsocket을 사용하여 URL재작성


액세스

3scale APIcast
3scale Batcher
Camel Proxy
Content Caching
IP Check
JWT Claim Check
RH-SSO/Keycloak 역할 확인
OAuth 2.0 상호 TLS 클라이언트

인증

OAuth 2.0 토큰 검사
속도 제한 헤더
응답/요청 콘텐츠 제한
라우팅
TLS 클라이언트 인증서 유효성 검사
업스트림

콘텐츠

3scale APIcast
쿼드 컨텍스트 디버그
속도 제한 헤더
라우팅
업스트림 스트림

balancer

업스트림 상호 TLS

header_filter

CORS 요청 처리
헤더 수정
응답/요청 콘텐츠 제한
HTTP 응답 코드 덮어쓰기

body_filter

응답/요청 콘텐츠 제한

post_action

3scale APIcast
사용자 정의 메트릭

log

엣지 제한
로깅

4.2.5. 3scale API Management 표준 정책 및 이를 처리하는 NGINX 단계

다음 표에는 표준 정책과 해당 정책의 기능 또는 기능을 실행하는 NGINX 단계 또는 단계가 나열되어 있습니다. 이 표를 사용하여 정책 체인에서 정책을 올바르게 정렬하여 업스트림 API에 대한 올바른 요청을 생성합니다.

표준 정책정책 기능을 실행하는 NGINX 단계

3scale APIcast

init
다시쓰기
콘텐츠
post_action
APIcast는 3scale APIcast 정책을 모든 요청에 적용합니다.

익명 액세스

재작성

3scale 인증 캐싱

정책 체인에서는 이 정책의 위치가 중요하지 않습니다.

3scale Batcher

액세스

3scale Referrer

재작성

Camel 서비스

액세스

조건부 정책

정책 체인에서는 이 정책의 위치가 중요하지 않습니다.

콘텐츠 캐싱

액세스

CORS 요청 처리

header_filter

사용자 정의 메트릭

post_action

Echo

재작성

엣지 제한


로그에 액세스

헤더 수정

rewrite
header_filter

HTTP 응답 코드 덮어쓰기

header_filter

IP 확인

액세스

JWT 클레임 확인

액세스

유동성 컨텍스트 디버그

콘텐츠

로깅

log

유지 관리 모드

액세스

NGINX 필터

재작성

OAuth 2.0 상호 TLS 클라이언트 인증

액세스

OAuth 2.0 토큰 인트로스펙션

액세스

프록시 서비스

정책 체인에서는 이 정책의 위치가 중요하지 않습니다.

속도 제한 헤더

액세스 +콘텐츠

응답/요청 콘텐츠 제한


header_filter
body_filter액세스

Retry

정책 체인에서는 이 정책의 위치가 중요하지 않습니다.

RH-SSO/Keycloak 역할 확인

액세스

라우팅


콘텐츠에 액세스

SOAP

재작성

TLS 클라이언트 인증서 유효성 검사

액세스

TLS 종료

ssl_certificate

업스트림


액세스
콘텐츠를 다시작성합니다.

업스트림 연결

정책 체인에서는 이 정책의 위치가 중요하지 않습니다.

업스트림 상호 TLS

balancer

URL 재작성

재작성

캡처 캡처로 URL 재작성

재작성

WebSocket

재작성

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.