데이터베이스 비밀번호 플러그인을 사용하여 데이터베이스 접속 인증

Oracle GoldenGate 23.5 이상에는 사용자 정의 코드를 작성하여 타사 저장소에서 데이터베이스 인증서를 검색한 다음 미리 정의된 API에서 Oracle GoldenGate로 반환할 수 있는 사용자 친화적인 플러그인이 포함되어 있습니다.

조직의 모범 사례로 향상된 보안 규칙이 포함됨에 따라 일부 조직에서는 비밀번호와 같은 데이터베이스 인증서를 Oracle GoldenGate의 로컬 전자 지갑(자격 증명 저장소)에 저장할 수 없습니다. 비밀번호를 Oracle GoldenGate 외부의 저장소에 저장해야 합니다. 이 인증 방식을 구현하기 위해 Database Password Plugin이 도입되었습니다. 이를 통해 Oracle GoldenGate는 데이터베이스 인스턴스에 접속해야 하는 경우 사용자가 선택한 타사 저장소 또는 OCI 저장소에서 비밀번호를 검색할 수 있습니다.

Oracle GoldenGate에서 데이터베이스 비밀번호 플러그인을 사용으로 설정하고 이를 사용하여 Oracle GoldenGate에서 데이터베이스 접속을 설정할 때 암호 비밀번호를 검색하는 워크플로우에 대해 알아봅니다.

다음 옵션 중 하나를 사용하여 Oracle GoldenGate에 대한 데이터베이스 비밀번호 플러그인 서비스를 설정합니다.

데이터베이스 비밀번호 플러그인에 필요한 API

이 플러그인에는 최소한 두 개의 함수 API가 있어야 합니다. 이러한 API는 다음과 같이 설명됩니다.

getManifest()

각 플러그인은 다음과 같이 플러그인을 설명하는 JSON 스타일 문자열을 반환하는 getmanifest 함수를 표시해야 합니다.

{"$schema": "ogg:plugin", "version": "23.4" }

버전 번호는 Oracle GoldenGate 버전 번호보다 작거나 같을 수 있습니다. 예를 들어, Oracle GoldenGate 버전 23.6을 실행하는 경우 JSON 문자열의 버전 번호는 23.4, 23.5 또는 23.6일 수 있습니다.

getUseridAliasPassword (oggDomain *C.char, oggAlias *C.char, oggUserid *C.char, oggPassword *C.char)

이 함수는 Oracle GoldenGate에서 USERIDALIAS에 대한 비밀번호를 검색하기 위해 호출됩니다.

정수 값을 반환합니다. 0은 성공을 의미하며 0이 아닌 값은 실패입니다.

oggDomain, oggAlias 및 oggUserid는 데이터베이스 사용자 인증서를 식별하기 위한 입력 매개변수입니다. oggPassword는 저장소에서 인출된 비밀번호를 반환하는 출력 매개변수입니다.

타사 저장소에서 데이터베이스 비밀번호를 저장하고 액세스하도록 데이터베이스 비밀번호 플러그인 구성

선택한 타사 저장소에서 암호 암호를 생성, 저장 및 검색하려면 고유한 사용자 정의 코드를 작성해야 합니다. 이 코드는 Oracle GoldenGate Service Manager에서 서비스로 플러그인을 활성화하는 데 사용되는 공유 사용자 라이브러리를 생성해야 합니다. 플러그인이 활성화된 후 Oracle GoldenGate에서 데이터베이스 접속을 설정할 때 저장된 암호 비밀번호를 검색하기 위해 타사 저장소에 액세스할 수 있습니다. Oracle GoldenGate는 해당 USERID를 인증서 저장소의 domain_name.alias_name 아래에 별칭으로 저장합니다. domain_name 및 alias_name는 플러그인을 호출하기 위한 입력 매개변수로 사용됩니다. 예를 들어, 도메인 이름이 OracleGoldenGate이고 별칭이 ggeastadmin인 경우 암호 이름은 OracleGoldenGate.ggeastadmin입니다. 플러그인은 저장소에서 암호(암호)를 검색할 암호 이름을 식별합니다.

사용자 정의 코드는 공유 사용자 라이브러리로 컴파일할 수 있는 한 모든 언어로 작성할 수 있습니다. 사용할 수있는 가장 인기있는 언어는 GoLang, C / C ++ 및 Python입니다.

다음 다이어그램은 데이터베이스 비밀번호 플러그인을 Oracle GoldenGate와 함께 사용하여 타사 저장소에서 데이터베이스 접속을 설정할 때의 워크플로우를 보여줍니다. USERIDALIAS는 Oracle GoldenGate 인증서 저장소에 저장되고 암호 비밀번호는 타사 저장소에 저장됩니다.

이 다이어그램은 Oracle GoldenGate 비밀번호 플러그인 구성요소가 새 워크플로우에서 작동하는 방식에 대한 단계별 프로세스를 보여줍니다. 여기에는 데이터베이스에 로그인하기 위한 비밀번호를 저장하는 타사 저장소가 포함됩니다.

다음 단계에 따라 데이터베이스 비밀번호를 타사 저장소에 저장하고 Oracle GoldenGate에서 데이터베이스 접속을 인증하기 위해 검색하도록 데이터베이스 비밀번호 플러그인을 구성합니다.

  1. GG Service Manager Home/var/lib/plugins/ 디렉토리에 있는 Database Password Plugin을 찾습니다. 기본적으로 이 디렉토리에는 라이브러리가 없습니다.

    주: 라이브러리 파일 이름에는 제한이 없지만 플러그인은 이 위치에 존재하는 첫번째 라이브러리 파일만 선택합니다.

  2. 플러그인에 사용된 함수 API를 확인하십시오. 자세한 내용은 데이터베이스 비밀번호 플러그인에 필요한 API를 참조하십시오.

  3. 코드를 작성하고 컴파일하여 Database Password Plugin을 활성화하는 데 사용되는 공유 유저 라이브러리를 생성합니다. Database Password Plugin을 설정하는 데 사용 중인 Third-party Vault에 따라 코드를 작성 및 컴파일해야 합니다.

  4. 컴파일된 사용자 라이브러리를 Service_Manager_Home/var/lib/plugins/ 디렉토리에 복사합니다.

  5. REST API 명령을 실행하여 Service Manager에서 플러그인을 새 서비스로 활성화합니다. Service Manager가 포트 9011에서 로컬로 실행되고 있다고 가정하면 명령은 다음과 유사합니다.

    shell>OGG_ADMIN_PASSWORD="xxxx"
    shell>curl -svu "oggadmin:${OGG_ADMIN_PASSWORD}"
    http://127.0.0.1:9011/services/v2/deployments/ServiceManager/services/pluginsrvr \ -XPOST --data '{"$schema":"ogg:service", "config":"external", "enabled":true,
    "critical":true, "status":"running"}'

    다음 그림과 같이 플러그인 상태가 활성화된 후 서비스 관리자에서 플러그인 상태를 볼 수 있습니다. 서비스에서 서비스를 플러그인 서비스로 볼 수 있습니다.

    데이터베이스 비밀번호 플러그인은 사용으로 설정된 후 Service Manager Services 화면에서 볼 수 있습니다.

    주: NGINX 또는 보안 배치를 사용 중인 경우 명령줄에서 http 대신 https를 사용하고 적절한 CA 인증서 경로를 사용해야 합니다.

  6. 필요한 경우 타사 저장소에 대한 환경 변수를 설정하고 서비스 관리자를 다시 시작합니다.

  7. 타사 저장소를 구성하고 여기에 비밀번호를 저장합니다.

  8. 관리 클라이언트를 실행하고 PLUGIN 옵션 또는 이전에 사용된 NOPASSWORD 옵션을 사용하여 데이터베이스 로그인 인증서를 설정하고 데이터베이스 연결에 성공했는지 테스트합니다. 다음 예에서는 이 구성을 설명합니다.

    a. 배포에 연결:

     OGG (not connected) 1> CONNECT http://127.0.0.1:9011 AS oggadmin

    b. 자격 증명 추가:

    • Plugin 옵션 사용:

      OGG (http://127.0.0.1:9011 Deployment) 2> ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 PLUGIN ALIAS ggeastadmin

      출력:

      2026-04-02T18:34:14Z  INFO OGG-15114  Credential store altered.
      Credential Type: Plugin
    • PLUGIN SECRET 옵션 사용:

      OGG (http://127.0.0.1:9011 Deployment) 2> ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 PLUGIN SECRET abc ALIAS ggeastadmin

      출력:

      2026-04-02T18:34:14Z  INFO OGG-15114  Credential store altered.
      Credential Type: Plugin Secret
    • 다음 명령을 사용하여 레거시 NOPASSWORD 옵션을 사용합니다.

      ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 NOPASSWORD ALIAS u1alias;

    c. 인증서 별칭을 사용하여 데이터베이스에 로그인합니다.

     OGG (http://127.0.0.1:9011 Deployment) 3> DBLOGIN USERIDALIAS ggadmin

OCI 저장소에서 데이터베이스 비밀번호를 저장하고 액세스하도록 데이터베이스 비밀번호 플러그인 구성

OCI Vault에서 암호 암호를 생성, 저장 및 검색하려면 OCI Vault에서 암호 암호를 검색하는 방법을 보여주는 샘플 코드를 사용할 수 있습니다. Oracle GoldenGate는 USERID를 인증서 저장소의 domain_name.alias_name 아래에 별칭으로 저장합니다. 비밀번호는 OCI 저장소에 암호 이름 domain_name.alias_name 아래의 암호로 저장됩니다. 예를 들어, 도메인 이름이 OracleGoldenGate이고 별칭이 ggeastadmin인 경우 암호 이름은 OracleGoldenGate.ggeastadmin입니다. 플러그인은 저장소에서 암호(암호)를 검색할 암호 이름을 식별합니다.

다이어그램의 단계에서는 OCI Vault를 사용하여 Database Password Plugin을 설정하는 워크플로우를 보여줍니다.

Oracle GoldenGate에서 데이터베이스에 접속하기 위한 OCI 저장소로 데이터베이스 비밀번호 플러그인을 구성하는 워크플로우입니다.

  1. OCI 저장소에 비밀번호를 생성합니다.

  2. 이 데이터베이스 사용자 `ggeastadmin`에 대한 비밀번호를 보유하는 암호가 OCI 저장소에 생성되었는지 확인합니다. 암호 이름이 필요한 이름 지정 규칙과 일치하는지 확인합니다(예: `domain_name.alias_name` 형식의 `OracleGoldenGate.ggeastadmin`). ![OCI Vault에서 암호 이름은 필요한 이름 지정 규칙과 일치해야 합니다(예: domain_name.alias_name 형식의 OracleGoldenGate.ggeastadmin).](images/vault-1.png " ")
  3. GG Service Manager Home/var/lib/plugins/ 디렉토리에 있는 Database Password Plugin을 찾습니다. 기본적으로 이 디렉토리에는 라이브러리가 없습니다.

    주: 라이브러리 파일 이름에는 제한이 없지만 플러그인은 이 위치에 존재하는 첫번째 라이브러리 파일만 선택합니다.

  4. 플러그인과 함께 사용해야 하는 함수 API를 확인합니다. 자세한 내용은 데이터베이스 비밀번호 플러그인에 필요한 API를 참조하십시오.

  5. OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go에서 샘플 코드에 액세스하여 공유 사용자 라이브러리를 생성합니다.

  6. OGG_HOME/src/PluginExamples/OCIVault/OCIVault.go에서 make 명령을 실행하여 코드를 컴파일합니다. 그러면 이름이 libOCIVault.so인 사용자 라이브러리가 생성됩니다.

  7. 사용자 라이브러리 libOCIVault.so를 Service_Manager_Home/var/lib/plugins/ 디렉토리에 복사합니다.

  8. REST API 명령을 실행하여 서비스 관리자에서 이 플러그인을 새 서비스로 활성화합니다. Service Manager가 포트 9011에서 로컬로 실행되고 있다고 가정하면 명령은 다음과 유사합니다.

    shell>OGG_ADMIN_PASSWORD="xxxx"
    shell>curl -svu "oggadmin:${OGG_ADMIN_PASSWORD}"
    http://127.0.0.1:9011/services/v2/deployments/ServiceManager/services/pluginsrvr \ -XPOST --data '{"$schema":"ogg:service", "config":"external", "enabled":true,
    "critical":true, "status":"running"}'

    다음 그림과 같이 플러그인 상태가 활성화된 후 서비스 관리자에서 플러그인 상태를 볼 수 있습니다. 서비스에서 서비스를 플러그인 서비스로 볼 수 있습니다.

    데이터베이스 비밀번호 플러그인은 사용으로 설정된 후 Service Manager Services 화면에서 볼 수 있습니다.

    주: NGINX 또는 보안 배치를 사용하는 경우 http 대신 https를 사용하고 명령줄에 적합한 CA 인증서 경로를 사용해야 합니다.

  9. Service Manager 웹 인터페이스에서 OCI_AUTH 및 OCID_VAULT_OCID 환경 변수를 다음 값으로 설정합니다.

    • OCI_AUTH = instance_principal: 이 예에서는 instance_principal 인증 방법이 사용되었습니다. 그러나 데이터베이스 비밀번호 플러그인은 다음을 포함하여 OCI Vault에 대해 다음과 같은 인증 방법을 지원합니다.

      • instance_pricinpal: 인스턴스 주체 인증.

      • DEFAULT: OCI 구성 파일의 기본 프로파일입니다.

      • Customized name: OCI 구성 파일의 커스터마이즈된 프로파일입니다.

      • OCID_VAULT_OCID = ocid1.vault.oc1-us-sanjose-1.exxxxxxxxxxxxxxxxxx42upinp4mfxwta: 이 값은 2단계에서 파생됩니다.

        이러한 환경 변수는 모두 서비스 관리자 구성 아래의 환경 변수 섹션에서 올바르게 설정해야 합니다.

        환경 변수 OCI_AUTH 및 OCI_VAULT_OCID를 설정합니다.

        주: NGINX 또는 보안 배치를 사용하는 경우 http 대신 https를 사용하고 명령줄에 적합한 CA 인증서 경로를 사용해야 합니다.

  10. Service Manager를 다시 시작하여 설정을 활성화합니다.

  11. Oracle GoldenGate Service Manager가 실행 중인 VM 인스턴스를 식별합니다.

  12. instance_principal 인증이 작동하도록 동적 그룹에 VM 인스턴스를 추가합니다.

  13. VM 인스턴스에 대한 태그(예: EASTVaultTest)를 지정합니다. 이렇게 하면 동적 그룹을 더 쉽게 생성할 수 있습니다. 자세한 내용은 동적 그룹 관리를 참조하십시오. 동적 그룹에는 해당 저장소의 암호를 사용하는 정책이 필요합니다.

  14. 이 동적 그룹이 암호 리소스(암호)를 사용하도록 허용하는 정책을 만듭니다. 저장소 서비스에 대한 액세스를 제어하는 정책 생성에 대한 자세한 내용은 저장소 서비스에 대한 세부정보를 참조하십시오.

    OCI 저장소에서 암호 비밀번호에 액세스하기 위한 정책

  15. 다음 예제와 같이 Admin Client를 실행하여 NOPASSWORD 옵션으로 데이터베이스 로그인 Alias를 생성하고 연결이 성공했는지 테스트합니다.

    OGG (not connected) 1> CONNECT http://127.0.0.1:9011 AS oggadmin
    Using default deployment 'Deployment'
    OGG (http://127.0.0.1:9011 Deployment) 2> ALTER CREDENTIALSTORE ADD USER ggeastadmin@//dbms:1521/ORCLPDB1 ALIAS ggeastadmin NOPASSWORD
    2024-04-02T18:34:14Z  INFO    OGG-15114  Credential store altered.
    OGG (http://127.0.0.1:9011 Deployment) 3> DBLOGIN USERIDALIAS ggadmin
    Successfully logged into database.

Oracle Key Vault에서 데이터베이스 비밀번호를 저장 및 액세스하도록 데이터베이스 비밀번호 플러그인 구성

Oracle GoldenGate 23.5 이상 릴리스에는 타사 저장소에서 데이터베이스 인증서를 검색하기 위한 사용자 정의 코드를 작성한 다음 Configure the Database Password Plugin to Store and Access the Database Password from a Third-Party Vault에 설명된 대로 미리 정의된 API의 인증서를 Oracle GoldenGate에 반환할 수 있는 플러그인 서비스가 포함되어 있습니다. 이 기능에는 Oracle GoldenGate에서 Oracle Key Vault의 암호를 관리하도록 구성할 수 있는 libokvoggdbpwd.so 라이브러리가 포함되어 있습니다.

다음 다이어그램은 플러그인 서비스를 구성하고 OKV 플러그인 라이브러리를 사용하여 Oracle Key Vault 서버에서 데이터베이스 비밀번호를 요청 및 검색하는 Oracle GoldenGate와 Oracle Key Vault 간의 워크플로우를 나타냅니다.

Oracle GoldenGate 프로세스에 대해 OKV에서 데이터베이스 비밀번호를 검색하도록 플러그인 서비스를 구성하는 프로세스를 나타내는 워크플로우입니다.

Oracle Key Vault에서 데이터베이스 암호를 저장하고 검색하는 프로세스는 다음과 같이 요약할 수 있습니다.

  1. Oracle GoldenGate 관리자는 RESTful 서비스 유틸리티를 사용하여 Oracle GoldenGate 비밀번호를 Oracle Key Vault에 업로드합니다.

  2. Oracle GoldenGate가 libokvoggdbpwd.so 플러그인 라이브러리를 사용하여 Oracle Key Vault 서버에서 데이터베이스 인증서에 대해 요청합니다. 이 암호는 백엔드 검증이 성공한 후 OKV 서버에서 인출됩니다.

  3. 비밀번호가 검색되면 Oracle GoldenGate 프로세스가 원격으로 저장된 비밀번호를 사용하여 데이터베이스에 접속할 수 있습니다.

Oracle GoldenGate 데이터베이스 비밀번호 저장 및 검색을 위한 이 기능 구현에 대한 자세한 내용은 Oracle Key Vault Administrator's Guide의 Centralizing the Management of Oracle GoldenGate Passwords를 참조하십시오.