4장. 보안 관리
4.1. OpenAPI 서비스에 대한 인증 링크 복사링크가 클립보드에 복사되었습니다!
OpenAPI 서비스 작업을 보호하려면 OpenAPI 사양 을 사용하여 보안
스키마를 정의합니다. 이러한 체계는 OpenAPI 사양 파일의 securitySchemes
섹션에 있습니다. 보안 계획을 참조하는 보안 요구 사항을
추가하여 작업을 구성해야 합니다
. 워크플로우에서 이러한 작업을 호출하면 해당 정보가 필요한 인증 구성을 결정하는 데 사용됩니다.
이 섹션에서는 지원되는 인증 유형에 대해 간단히 설명하고 워크플로 내에서 보안 OpenAPI 서비스 작업에 액세스하도록 구성하는 방법을 보여줍니다.
4.1.1. OpenAPI 서비스 인증 개요 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Serverless Logic에서는 OpenAPI 사양 파일에 정의된 보안
스키마를 사용하여 OpenAPI 서비스 작업을 보호할 수 있습니다. 이러한 체계는 워크플로우 내에서 호출되는 작업에 대한 인증 요구 사항을 정의하는 데 도움이 됩니다.
보안 체계는
OpenAPI 문서의 securitySchemes
섹션에 선언됩니다. 각 스키마는 HTTP Basic, API 키 등과 같이 적용할 인증 유형을 지정합니다.
워크플로우에서 보안 작업을 호출할 때 이러한 정의된 체계를 참조하여 필요한 인증 구성을 확인합니다.
보안 체계 정의의 예
OpenAPI 파일에서 보안
스키마를 정의하지만 작업에 대한 보안 요구
사항이 포함되지 않은 경우 기본적으로 생성기를 구성하여 생성할 수 있습니다. 이러한 기본값은 명시적으로 정의된 요구 사항 없이 작업에 적용됩니다.
해당 스키마를 구성하려면 quarkus.openapi-generator.codegen.default-security-scheme
속성을 사용해야 합니다. default-security-scheme
속성은 런타임이 아닌 코드 생성 시에만 사용됩니다. 이 값은 http-basic-example
또는 api-key-example
:과 같은 securitySchemes
섹션에서 사용 가능한 모든 체계와 일치해야 합니다.
예를 들면 다음과 같습니다.
quarkus.openapi-generator.codegen.default-security-scheme=http-basic-example
$ quarkus.openapi-generator.codegen.default-security-scheme=http-basic-example
4.1.2. OpenAPI 서비스에 대한 인증 자격 증명 구성 링크 복사링크가 클립보드에 복사되었습니다!
인증 체계에 의해 보안된 OpenAPI 서비스 작업을 호출하려면 애플리케이션에서 해당 자격 증명 및 매개 변수를 구성해야 합니다. OpenShift Serverless Logic은 이러한 구성을 사용하여 워크플로우 실행 중에 외부 서비스로 인증합니다.
이 섹션에서는 OpenAPI 사양 파일에 선언된 보안 체계에 필요한 구성 속성을 정의하고 적용하는 방법을 설명합니다. application.properties
, 워크플로우와 연결된 ConfigMap
또는 SonataFlow
CR의 환경 변수를 사용하여 이러한 인증 정보를 제공할 수 있습니다.
OpenAPI 사양 파일에 정의된 보안 체계는 동일한 파일에서 사용할 수 있는 모든 작업에 전역적입니다. 즉, 특정 보안 체계에 대해 설정된 구성이 다른 보안 작업에도 적용됩니다.
사전 요구 사항
- OpenShift Container Platform에서 애플리케이션 및 기타 워크로드를 생성할 수 있는 적절한 역할 및 권한으로 OpenShift Serverless Logic 프로젝트에 액세스할 수 있습니다.
- OpenAPI 사양에는 하나 이상의 보안 체계가 포함됩니다.
- OpenAPI 사양 파일에 액세스할 수 있습니다.
-
http-basic-example
또는api-key-example
을 구성할 스키마를 식별했습니다. -
application.properties
파일, 워크플로우ConfigMap
또는SonataFlow
CR에 액세스할 수 있습니다.
프로세스
다음 형식을 사용하여 속성 키를 작성합니다.
quarkus.openapi-generator.[filename].auth.[security_scheme_name].[auth_property_name]
quarkus.openapi-generator.[filename].auth.[security_scheme_name].[auth_property_name]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
filename
은 security_example_json과 같이 OpenAPI 사양을 포함하는 파일의 sanitized 이름입니다. 이 이름을 종료하려면 알파벳이 아닌 모든 문자를_
밑줄로 교체해야 합니다. -
security_scheme_name
은 OpenAPI 사양 파일의 보안 스키마 오브젝트 정의 (예:http_basic_example
또는api_key_example
)의 sanitized 이름입니다. 이 이름을 종료하려면 알파벳이 아닌 모든 문자를_
밑줄로 교체해야 합니다. auth_property_name
은 사용자 이름과 같이 구성할 속성의 이름입니다. 이 속성은 정의된 보안 스키마 유형에 따라 다릅니다.참고환경 변수를 사용하여 속성을 구성하는 경우 MicroProfile 환경 변수 매핑 규칙을 따르십시오. 속성 키의 알파벳이 아닌 모든 문자를 밑줄
_
로 바꾸고 전체 키를 대문자로 변환할 수 있습니다.
-
다음 예제에서는 application.properties
, 워크플로우와 연결된 ConfigMap
또는 SonataFlow
CR에 정의된 환경 변수를 사용하여 이러한 구성 속성을 제공하는 방법을 보여줍니다.
application.properties
파일을 사용하여 인증 정보를 구성하는 예
quarkus.openapi-generator.security_example_json.auth.http_basic_example.username=myuser quarkus.openapi-generator.security_example_json.auth.http_basic_example.password=mypassword
quarkus.openapi-generator.security_example_json.auth.http_basic_example.username=myuser
quarkus.openapi-generator.security_example_json.auth.http_basic_example.password=mypassword
워크플로우 ConfigMap
을 사용하여 인증 정보를 구성하는 예
워크플로우 이름이 example-workflow
인 경우 사용자 정의 속성이 포함된 ConfigMap
의 이름은 example-workflow-props
여야 합니다.
SonataFlow
CR에서 환경 변수를 사용하여 인증 정보를 구성하는 예
4.1.3. 기본 HTTP 인증의 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 HTTP 기본 인증 체계를 사용하여 워크플로우 작업을 보호하는 방법을 보여줍니다. security-example.json
파일은 http-basic-example
보안 체계를 사용하는 단일 작업으로 OpenAPI 서비스를 정의합니다. 애플리케이션 속성, worfklow
ConfigMap
또는 환경 변수를 사용하여 인증 정보를 구성할 수 있습니다.
HTTP 기본 인증을 사용한 OpenAPI 사양의 예
이 예제에서 sayHelloBasic
작업은 securitySchemes
섹션에 정의된 http-basic-example
체계를 사용하여 보호됩니다. 워크플로우에서 이 작업을 호출할 때 적절한 자격 증명을 구성해야 합니다.
4.1.3.1. 기본 HTTP 인증에 지원되는 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
다음 구성 키를 사용하여 http-basic-example
스키마에 대한 인증 자격 증명을 제공할 수 있습니다.
설명 | 속성 키 | 예 |
---|---|---|
사용자 이름 인증 정보 |
|
|
암호 인증 정보 |
|
|
[filename]
을 sanitized OpenAPI 파일 이름 security_example_json
및 [security_scheme_name]
을 sanitized scheme name http_basic_example
로 교체할 수 있습니다.
4.1.4. 전달자 토큰 인증 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 HTTP Bearer 인증 체계를 사용하여 OpenAPI 작업을 보호하는 방법을 보여줍니다. security-example.json
파일은 인증을 위해 http-bearer-example
스키마를 사용하는 sayHelloBearer
작업을 사용하여 OpenAPI 서비스를 정의합니다. 워크플로우 실행 중에 보안 작업에 액세스하려면 애플리케이션 속성, 워크플로 ConfigMap
또는 환경 변수를 사용하여 전달자 토큰을 구성해야 합니다.
Bearer 토큰 인증을 사용한 OpenAPI 사양의 예
이 예에서 sayHelloBearer
작업은 http-bearer-example
스키마로 보호됩니다. 이 작업을 성공적으로 호출하려면 구성에 유효한 전달자 토큰을 정의해야 합니다.
4.1.4.1. 전달자 토큰 인증에 지원되는 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
다음 구성 속성 키를 사용하여 전달자 토큰을 제공할 수 있습니다.
설명 | 속성 키 | 예 |
---|---|---|
전달자 토큰 |
|
|
[filename]
을 sanitized OpenAPI 파일 이름 security_example_json
및 [security_scheme_name]
을 sanitized scheme name http_bearer_example
로 교체할 수 있습니다.
4.1.5. API 키 인증 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 apiKey
인증 체계를 사용하여 OpenAPI 서비스 작업을 보호하는 방법을 보여줍니다. security-example.json
파일은 api-key-example
보안 체계를 사용하는 sayHelloApiKey
작업을 정의합니다. 애플리케이션 속성, 워크플로우 ConfigMap
또는 환경 변수를 사용하여 API 키를 구성할 수 있습니다.
API 키 인증을 사용하는 OpenAPI 사양의 예
이 예에서 sayHelloApiKey
작업은 HTTP 요청 헤더에 전달된 API 키를 사용하는 api-key-example
보안 스키마로 보호됩니다.
4.1.5.1. API 키 인증에 지원되는 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
다음 구성 속성을 사용하여 API 키를 구성할 수 있습니다.
설명 | 속성 키 | 예 |
---|---|---|
API 키 |
|
|
[filename]
을 sanitized OpenAPI 파일 이름 security_example_json
및 [security_scheme_name]
으로 교체할 수 있습니다.
apiKey
스키마 유형에는 Open API 서비스가 호출될 때 사용할 키 이름을 구성하는 추가 name
속성이 포함되어 있습니다. 또한 키를 전달하는 형식은 in
속성 값에 따라 다릅니다.
-
값이
header
이면 키가 HTTP 요청 매개변수로 전달됩니다. -
값이
쿠키
이면 키가 HTTP 쿠키로 전달됩니다. -
값이
쿼리
이면 키가 HTTP 쿼리 매개변수로 전달됩니다.
이 예제에서는 HTTP 헤더에 api-key-name: MY_KEY
로 키가 전달됩니다.
OpenShift Serverless Logic은 내부적으로 이를 관리하므로 속성 값을 설정하는 것 이상으로 추가 구성이 필요하지 않습니다.
4.1.6. 클라이언트 인증 정보 OAuth 2.0 인증 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 OAuth 2.0 클라이언트 인증 정보
흐름을 사용하여 OpenAPI 작업을 보호하는 방법을 보여줍니다. OpenAPI 사양은 oauth-example
보안 체계를 사용하는 sayHelloOauth2
작업을 정의합니다. HTTP Basic 또는 API 키와 같은 간단한 인증 방법과 달리 OAuth 2.0 인증은 Quarkus OpenID Connect(OIDC) 클라이언트와의 추가 통합이 필요합니다.
OAuth 2.0을 사용한 OpenAPI 사양 예
이 예에서 sayHelloOauth2
작업은 토큰 기반 인증에 클라이언트 인증 정보
흐름을 사용하는 oauth-example
보안 스키마로 보호됩니다.
4.1.6.1. OIDC 클라이언트 필터 확장 포함 OAuth 2.0 지원 링크 복사링크가 클립보드에 복사되었습니다!
OAuth 2.0 토큰 관리는 Quarkus OidcClient
에서 처리합니다. 이 통합을 활성화하려면 Quarkus OIDC Client Filter와 Quarkus OpenApi Generator OIDC 확장을 다음 예와 같이 프로젝트에 추가해야 합니다.
Maven을 사용하여 확장 기능을 추가하는 예
gitops
프로필을 사용하여 확장 추가의 예
워크플로우 이미지를 빌드할 때 다음 값을 사용하여 QUARKUS_EXTENSIONS 빌드 인수를 구성해야 합니다.
--build-arg=QUARKUS_EXTENSIONS=io.quarkus:quarkus-oidc-client-filter:3.15.4.redhat-00001,io.quarkiverse.openapi.generator:quarkus-openapi-generator-oidc:2.9.0-lts
$ --build-arg=QUARKUS_EXTENSIONS=io.quarkus:quarkus-oidc-client-filter:3.15.4.redhat-00001,io.quarkiverse.openapi.generator:quarkus-openapi-generator-oidc:2.9.0-lts
프리뷰
프로필을 사용하여 확장 기능을 추가하는 예
SonataFlowPlatform
CR에 추가된 확장 기능은 프리뷰
프로필을 사용하여 해당 네임스페이스에 배포하는 모든 워크플로우에 포함됩니다.
4.1.6.2. OidcClient 구성 링크 복사링크가 클립보드에 복사되었습니다!
보안 작업에 액세스하려면 application.properties
파일에 OidcClient
구성을 정의합니다. 이 구성에서는 OpenAPI 사양의 sanitized 보안 스키마 이름(이 경우 oauth_example
)을 다음과 같이 사용합니다.
이 구성에서는 다음을 수행합니다.
-
oauth_example
은 OpenAPI 파일에 있는oauth-example
스키마의 sanitized 이름과 일치합니다. 간소화된 스키마 이름과 해당OidcClient
간의 연결은 간단한 이름 지정 규칙을 사용하여 수행됩니다. - OidcClient는 워크플로우를 실행하는 동안 토큰 생성 및 갱신을 자동으로 처리합니다.
4.1.7. 권한 부여 토큰 전파 예 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Serverless Logic은 oauth2
또는 http
베어러 보안 스키마 유형을 사용하는 OpenAPI 작업에 대한 토큰 전파를 지원합니다. 토큰 전파를 사용하면 워크플로우 생성 중에 수신하는 권한 부여 토큰을 다운스트림 서비스로 전달할 수 있습니다. 이 기능은 요청을 시작한 클라이언트를 대신하여 워크플로우가 타사 서비스와 상호 작용해야 하는 경우에 유용합니다.
각 보안 체계에 대해 토큰 전파를 개별적으로 구성해야 합니다. 이 기능이 활성화되면 명시적으로 재정의되지 않는 한 동일한 스키마를 사용하여 보안된 모든 OpenAPI 작업에서는 전파된 토큰을 사용합니다.
다음 예제에서는 security-example.json
파일에서 sayHelloOauth2
작업을 정의합니다. 이 작업은 clientCredentials
흐름과 함께 oauth-example
보안 스키마를 사용합니다.
토큰 전파를 사용한 OpenAPI 사양의 예
4.1.7.1. 권한 부여 토큰 전파에 지원되는 구성 속성 링크 복사링크가 클립보드에 복사되었습니다!
다음 구성 키를 사용하여 토큰 전파를 활성화하고 사용자 지정할 수 있습니다.
워크플로우가 활성화된 동안 토큰은 자동으로 다운스트림 서비스로 전달됩니다. 워크플로우가 대기 상태(예: 타이머 또는 이벤트 기반 일시 중지)로 전환하면 토큰 전파가 중지됩니다. 워크플로우가 다시 시작되면 토큰이 자동으로 다시 전파되지 않습니다. 필요한 경우 재인증을 관리해야 합니다.
속성 키 | 예 | 설명 |
---|---|---|
|
|
지정된 스키마로 보안된 모든 작업에 대해 토큰 전파를 활성화합니다. 기본값은 |
|
| (선택 사항) 기본 인증 헤더를 사용자 지정 헤더 이름으로 재정의하여 토큰을 읽습니다. |
[filename]
을 sanitized OpenAPI 파일 이름 security_example_json
및 [security_scheme_name]
으로 교체할 수 있습니다.