Azure Key Vault를 사용하여 JVM에 TLS/SSL 인증서 제공

이 문서에서는 Azure Key Vault를 JVM에 통합하여 TLS/SSL 인증서를 제공하는 방법을 설명합니다.

java.security 파일에 JCA 공급자 추가

JCA 공급자를 등록하려면 JVM에서 이를 알고 있어야 합니다. 이 작업을 수행하려면 다음 단계를 사용합니다.

  1. JVM 설치 내에서 java.security 파일의 복사본을 만들고 파일 이름을 my.java.security로 지정합니다.

  2. 파일 내에서 줄을 security.provider.<maximum-value>찾습니다. <maximum-value> 자리 표시자를 모든 항목 중에서 이 위치의 최대값으로 바꿉다. 예: security.provider.13=SunPKCS11

  3. 이 항목의 수를 1씩 증분합니다. 예를 들어 . security.provider.13security.provider.14

  4. 다음 줄을 추가합니다.

    security.provider.14=com.azure.security.keyvault.jca.KeyVaultJcaProvider
    

참고 항목

security.provider.<X> 항목에 대해 <X>다른 숫자 값이 있는지 확인하고 1부터 증분 순서로 유지합니다.

애플리케이션을 실행하는 방법

애플리케이션을 실행하려면 다음 단계를 사용하고 자리 표시자를 사용자 고유의 <...> 값으로 바꿉다.

  1. 클래스 경로에 azure-security-keyvault-jca-X.Y.Z.jar 파일을 추가합니다. 예를 들어 Tomcat 9와 통합하려는 경우 tomcat9w.exe를 사용하여 azure-security-keyvault-jca-X.Y.Z.jar 파일의 전체 경로를 Java 클래스 경로에 추가해야 합니다.

  2. 명령줄에 추가 -Djava.security.properties==my.java.security 합니다.

  3. 명령줄에 추가하여 -Dazure.keyvault.uri=<your-keyvault-uri> 사용할 Azure Key Vault를 나타냅니다. 예: -Dazure.keyvault.uri=https://some.vault.azure.net/

  4. 시나리오에 따라 다음 목록에 표시된 인수를 추가합니다.

    • 서비스 주체를 사용하여 인증하는 경우 다음 인수를 추가합니다.

      • -Dazure.keyvault.tenant-id=<your-tenant-id>
      • -Dazure.keyvault.client-id=<your-client-id>
      • -Dazure.keyvault.client-secret=<your-client-secret>
    • 시스템 할당 관리 ID를 사용하여 인증하는 경우 더 이상 인수가 필요하지 않습니다.

    • 사용자 할당 관리 ID를 사용하여 인증하는 경우 다음 인수를 추가합니다.

      • -Dazure.keyvault.managed-identity=<object-id-of-your-user-managed-identity>

이러한 인증 시나리오 에 대한 자세한 내용은 Microsoft Entra ID 의 애플리케이션 및 서비스 주체 개체 및 Azure 리소스에 대한 관리 ID가 Azure 가상 머신에서 작동하는 방식을 참조하세요.

서비스 주체 사용

Azure 클라이언트 ID 및 Azure 클라이언트 암호를 만들려면 다음 명령을 사용하여 자리 표시자를 사용자 고유의 <...> 값으로 바꿉니다. 반환된 값(예: appId, ) passwordtenant을 저장해야 합니다.

export CLIENT_NAME=<your-client-name>
az ad sp create-for-rbac --skip-assignment --name ${CLIENT_NAME}
export CLIENT_ID=$(az ad sp list --display-name ${CLIENT_NAME} | jq -r '.[0].appId')
az ad app credential reset --id ${CLIENT_ID}

나중에 사용할 수 있도록 반환된 값을 저장합니다.

지정된 CLIENT_ID 클라이언트가 대상 Key Vault에 액세스할 수 있는지 확인합니다. 액세스 권한을 부여하려면 자리 표시자를 바꾸는 <your-key-vault-name> 다음 명령을 사용합니다.

az keyvault set-policy \
    --name <your-key-vault-name> \
    --spn ${CLIENT_ID} \
    --secret-permissions get list \
    --certificate-permissions get list \
    --key-permissions get list

관리 ID 사용

시스템 할당 관리 ID를 사용하도록 설정하거나 사용자 할당 관리 ID를 만들려면 Azure CLI를 사용하여 Azure VM에서 Azure 리소스에 대한 관리 ID 구성의 지침을 따릅니다.

관리 ID의 개체 ID를 얻은 후 다음 명령을 사용하여 관리 ID에 대한 Key Vault의 액세스 정책을 만듭니다.

az keyvault set-policy \
    --name <your-key-vault-name> \
    --object-id <object-id-of-your-managed-identity> \
    --secret-permissions get list \
    --certificate-permissions get list \
    --key-permissions get list

참고 항목

관리 ID의 개체 ID는 사용자가 할당한 관리 ID를 사용할 때 보안 주체 ID라고도 합니다.

클라이언트/서버 쪽 TLS/SSL 예제

클라이언트/서버 쪽 TLS/SSL의 예제는 Java용 Azure Key Vault JCA 클라이언트 라이브러리의 예제 섹션을 참조하세요.

다음 단계