4장. 보안 관리


4.1. OpenAPI 서비스에 대한 인증

OpenAPI 서비스 작업을 보호하려면 OpenAPI 사양 을 사용하여 보안 스키마를 정의합니다. 이러한 체계는 OpenAPI 사양 파일의 securitySchemes 섹션에 있습니다. 보안 계획을 참조하는 보안 요구 사항을 추가하여 작업을 구성해야 합니다. 워크플로우에서 이러한 작업을 호출하면 해당 정보가 필요한 인증 구성을 결정하는 데 사용됩니다.

이 섹션에서는 지원되는 인증 유형에 대해 간단히 설명하고 워크플로 내에서 보안 OpenAPI 서비스 작업에 액세스하도록 구성하는 방법을 보여줍니다.

4.1.1. OpenAPI 서비스 인증 개요

OpenShift Serverless Logic에서는 OpenAPI 사양 파일에 정의된 보안 스키마를 사용하여 OpenAPI 서비스 작업을 보호할 수 있습니다. 이러한 체계는 워크플로우 내에서 호출되는 작업에 대한 인증 요구 사항을 정의하는 데 도움이 됩니다.

보안 체계는 OpenAPI 문서의 securitySchemes 섹션에 선언됩니다. 각 스키마는 HTTP Basic, API 키 등과 같이 적용할 인증 유형을 지정합니다.

워크플로우에서 보안 작업을 호출할 때 이러한 정의된 체계를 참조하여 필요한 인증 구성을 확인합니다.

보안 체계 정의의 예

"securitySchemes": {
  "http-basic-example": {
    "type": "http",
    "scheme": "basic"
  },
  "api-key-example": {
    "type": "apiKey",
    "name": "my-example-key",
    "in": "header"
  }
}
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

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]
    Copy to Clipboard Toggle word wrap
    • 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
Copy to Clipboard Toggle word wrap

워크플로우 ConfigMap을 사용하여 인증 정보를 구성하는 예

apiVersion: v1
data:
  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
kind: ConfigMap
metadata:
  labels:
    app: example-workflow
  name: example-workflow-props
  namespace: example-namespace
Copy to Clipboard Toggle word wrap

참고

워크플로우 이름이 example-workflow 인 경우 사용자 정의 속성이 포함된 ConfigMap 의 이름은 example-workflow-props 여야 합니다.

SonataFlow CR에서 환경 변수를 사용하여 인증 정보를 구성하는 예

apiVersion: sonataflow.org/v1alpha08
kind: SonataFlow
metadata:
  name: example-workflow
  namespace: example-namespace
  annotations:
    sonataflow.org/description: Example Workflow
    sonataflow.org/version: 0.0.1
    sonataflow.org/profile: preview
spec:
  podTemplate:
    container:
      env:
        - name: QUARKUS_OPENAPI_GENERATOR_SECURITY_EXAMPLE_JSON_AUTH_HTTP_BASIC_EXAMPLE_USERNAME
          value: myuser
        - name: QUARKUS_OPENAPI_GENERATOR_SECURITY_EXAMPLE_JSON_AUTH_HTTP_BASIC_EXAMPLE_PASSWORD
          value: mypassowrd
Copy to Clipboard Toggle word wrap

4.1.3. 기본 HTTP 인증의 예

다음 예제에서는 HTTP 기본 인증 체계를 사용하여 워크플로우 작업을 보호하는 방법을 보여줍니다. security-example.json 파일은 http-basic-example 보안 체계를 사용하는 단일 작업으로 OpenAPI 서비스를 정의합니다. 애플리케이션 속성, worfklow ConfigMap 또는 환경 변수를 사용하여 인증 정보를 구성할 수 있습니다.

HTTP 기본 인증을 사용한 OpenAPI 사양의 예

{
  "openapi": "3.1.0",
  "info": {
    "title": "Http Basic Scheme Example",
    "version": "1.0"
  },
  "paths": {
    "/hello-with-http-basic": {
      "get": {
        "operationId": "sayHelloBasic",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [{"http-basic-example" : []}]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "http-basic-example": {
        "type": "http",
        "scheme": "basic"
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

이 예제에서 sayHelloBasic 작업은 securitySchemes 섹션에 정의된 http-basic-example 체계를 사용하여 보호됩니다. 워크플로우에서 이 작업을 호출할 때 적절한 자격 증명을 구성해야 합니다.

4.1.3.1. 기본 HTTP 인증에 지원되는 구성 속성

다음 구성 키를 사용하여 http-basic-example 스키마에 대한 인증 자격 증명을 제공할 수 있습니다.

Expand
설명속성 키

사용자 이름 인증 정보

quarkus.openapi-generator.[filename].auth.[security_scheme_name].username

quarkus.openapi-generator.security_example_json.auth.http_basic_example.username=MY_USER

암호 인증 정보

quarkus.openapi-generator.[filename].auth.[security_scheme_name].password

quarkus.openapi-generator.security_example_json.auth.http_basic_example.password=MY_PASSWD

[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 사양의 예

{
  "openapi": "3.1.0",
  "info": {
    "title": "Http Bearer Scheme Example",
    "version": "1.0"
  },
  "paths": {
    "/hello-with-http-bearer": {
      "get": {
        "operationId": "sayHelloBearer",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "http-bearer-example": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "http-bearer-example": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

이 예에서 sayHelloBearer 작업은 http-bearer-example 스키마로 보호됩니다. 이 작업을 성공적으로 호출하려면 구성에 유효한 전달자 토큰을 정의해야 합니다.

4.1.4.1. 전달자 토큰 인증에 지원되는 구성 속성

다음 구성 속성 키를 사용하여 전달자 토큰을 제공할 수 있습니다.

Expand
설명속성 키

전달자 토큰

quarkus.openapi-generator.[filename].auth.[security_scheme_name].bearer-token

quarkus.openapi-generator.security_example_json.auth.http_bearer_example.bearer-token=MY_TOKEN

[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 사양의 예

{
  "openapi": "3.1.0",
  "info": {
    "title": "Api Key Scheme Example",
    "version": "1.0"
  },
  "paths": {
    "/hello-with-api-key": {
      "get": {
        "operationId": "sayHelloApiKey",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [{"api-key-example" : []}]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "api-key-example": {
        "type": "apiKey",
        "name": "api-key-name",
        "in": "header"
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

이 예에서 sayHelloApiKey 작업은 HTTP 요청 헤더에 전달된 API 키를 사용하는 api-key-example 보안 스키마로 보호됩니다.

4.1.5.1. API 키 인증에 지원되는 구성 속성

다음 구성 속성을 사용하여 API 키를 구성할 수 있습니다.

Expand
설명속성 키

API 키

quarkus.openapi-generator.[filename].auth.[security_scheme_name].api-key

quarkus.openapi-generator.security_example_json.auth.api_key_example.api-key=MY_KEY

[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 사양 예

{
  "openapi": "3.1.0",
  "info": {
    "title": "Oauth2 Scheme Example",
    "version": "1.0"
  },
  "paths": {
    "/hello-with-oauth2": {
      "get": {
        "operationId": "sayHelloOauth2",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth-example": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "oauth-example": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "authorizationUrl": "https://example.com/oauth",
            "tokenUrl": "https://example.com/oauth/token",
            "scopes": {}
          }
        }
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

이 예에서 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을 사용하여 확장 기능을 추가하는 예

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-oidc-client-filter</artifactId>
  <version>3.15.4.redhat-00001</version>
</dependency>

<dependency>
  <groupId>io.quarkiverse.openapi.generator</groupId>
  <artifactId>quarkus-openapi-generator-oidc</artifactId>
  <version>2.9.0-lts</version>
</dependency>
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

프리뷰 프로필을 사용하여 확장 기능을 추가하는 예

apiVersion: sonataflow.org/v1alpha08
kind: SonataFlowPlatform
metadata:
  name: sonataflow-platform-example
  namespace: example-namespace
spec:
  build:
    template:
      buildArgs:
        - name: QUARKUS_EXTENSIONS
          value: io.quarkus:quarkus-oidc-client-filter:3.15.4.redhat-00001,io.quarkiverse.openapi.generator:quarkus-openapi-generator-oidc:2.9.0-lts
Copy to Clipboard Toggle word wrap

참고

SonataFlowPlatform CR에 추가된 확장 기능은 프리뷰 프로필을 사용하여 해당 네임스페이스에 배포하는 모든 워크플로우에 포함됩니다.

4.1.6.2. OidcClient 구성

보안 작업에 액세스하려면 application.properties 파일에 OidcClient 구성을 정의합니다. 이 구성에서는 OpenAPI 사양의 sanitized 보안 스키마 이름(이 경우 oauth_example )을 다음과 같이 사용합니다.

# adjust these configurations according with the authentication service.
quarkus.oidc-client.oauth_example.auth-server-url=https://example.com/oauth
quarkus.oidc-client.oauth_example.token-path=/token
quarkus.oidc-client.oauth_example.discovery-enabled=false
quarkus.oidc-client.oauth_example.client-id=example-app
quarkus.oidc-client.oauth_example.grant.type=client
quarkus.oidc-client.oauth_example.credentials.client-secret.method=basic
quarkus.oidc-client.oauth_example.credentials.client-secret.value=secret
Copy to Clipboard Toggle word wrap

이 구성에서는 다음을 수행합니다.

  • 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 사양의 예

{
  "openapi": "3.1.0",
  "info": {
    "title": "Oauth2 Scheme Example",
    "version": "1.0"
  },
  "paths": {
    "/hello-with-oauth2": {
      "get": {
        "operationId": "sayHelloOauth2",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "security": [
          {
            "oauth-example": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "oauth-example": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "authorizationUrl": "https://example.com/oauth",
            "tokenUrl": "https://example.com/oauth/token",
            "scopes": {}
          }
        }
      }
    }
  }
}
Copy to Clipboard Toggle word wrap

4.1.7.1. 권한 부여 토큰 전파에 지원되는 구성 속성

다음 구성 키를 사용하여 토큰 전파를 활성화하고 사용자 지정할 수 있습니다.

참고

워크플로우가 활성화된 동안 토큰은 자동으로 다운스트림 서비스로 전달됩니다. 워크플로우가 대기 상태(예: 타이머 또는 이벤트 기반 일시 중지)로 전환하면 토큰 전파가 중지됩니다. 워크플로우가 다시 시작되면 토큰이 자동으로 다시 전파되지 않습니다. 필요한 경우 재인증을 관리해야 합니다.

Expand
속성 키설명

quarkus.openapi-generator.[filename].auth.[security_scheme_name].token-propagation

quarkus.openapi-generator.security_example_json.auth.oauth_example.token-propagation=true

지정된 스키마로 보안된 모든 작업에 대해 토큰 전파를 활성화합니다. 기본값은 false 입니다.

quarkus.openapi-generator.[filename].auth.[security_scheme_name].header-name

quarkus.openapi-generator.security_example_json.auth.oauth_example.header-name=MyHeaderName

(선택 사항) 기본 인증 헤더를 사용자 지정 헤더 이름으로 재정의하여 토큰을 읽습니다.

[filename] 을 sanitized OpenAPI 파일 이름 security_example_json[security_scheme_name] 으로 교체할 수 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat