Azure Stack Hub에서 Event Hubs에 대한 비밀을 회전하는 방법

이 문서에서는 Event Hubs 리소스 공급자가 사용하는 비밀을 회전하는 방법을 보여 줍니다.

개요 및 필수 구성 요소

참고

RP(부가 가치 리소스 공급자)에 대한 비밀 회전은 현재 PowerShell을 통해서만 지원됩니다. 또한 관리 경고가 현재 생성되지 않으므로 정기적으로 부가 가치 RP에 대한 비밀을 사전에 회전해야 합니다.

Azure Stack Hub 인프라와 마찬가지로 부가가치 리소스 공급자는 내부 및 외부 비밀을 모두 사용합니다. 비밀은 X509 인증서로 유지 관리되는 암호 및 암호화 키를 포함하여 여러 가지 형태를 사용할 수 있습니다. 운영자는 다음을 담당합니다.

  • 리소스 공급자 엔드포인트를 보호하는 데 사용되는 새 TLS 인증서와 같은 업데이트된 외부 암호를 제공합니다.
  • 정기적으로 리소스 공급자 비밀 회전 관리.

회전 프로세스를 준비할 때:

  1. 필요한 PFX 형식에 대한 세부 정보를 포함하여 X509 인증서를 획득/갱신하기 전에 Azure Stack Hub PKI(공개 키 인프라) 인증서 요구 사항에서 중요한 필수 조건을 검토합니다. 또한 특정 부가가치 리소스 공급자에 대한 선택적 PaaS 인증서 섹션에 지정된 요구 사항을 검토합니다.

  2. 아직 설치하지 않은 경우 계속하기 전에 Azure Stack Hub용 PowerShell Az 모듈을 설치합니다. Azure Stack Hub 비밀 회전에는 버전 2.0.2-preview 이상이 필요합니다. 자세한 내용은 Azure Stack Hub에서 AzureRM으로부터 Azure PowerShell Az로 마이그레이션을 참조하세요.

새 TLS 인증서 준비

다음으로 부가가치 리소스 공급자 엔드포인트를 보호하기 위한 TLS 인증서를 만들거나 갱신합니다.

  1. 리소스 공급자에 대한 인증서 갱신을 위한 CSR(인증서 서명 요청) 생성의 단계를 완료합니다. 여기서는 Azure Stack Hub 준비 상태 검사기 도구를 사용하여 CSR을 만듭니다. "다른 Azure Stack Hub 서비스에 대한 인증서 요청 생성" 단계에서 리소스 공급자에 올바른 cmdlet을 실행해야 합니다. 예를 들어 Event Hubs에는 New-AzsHubEventHubsCertificateSigningRequest가 사용됩니다. 완료되면 생성된 을 제출합니다. 새 인증서에 대한 CA(인증 기관)에 대한 REQ 파일입니다.

  2. CA로부터 인증서 파일을 받은 후 배포 또는 회전을 위한 인증서 준비의 단계를 완료합니다. 준비 상태 검사기 도구를 다시 사용하여 CA에서 반환한 파일을 처리합니다.

  3. 마지막으로 Azure Stack Hub PKI 인증서 유효성 검사의 단계를 완료합니다. 준비 상태 검사기 도구를 한 번 더 사용하여 새 인증서에 대한 유효성 검사를 수행합니다.

비밀 회전

마지막으로 리소스 공급자의 최신 배포 속성을 확인하고 이를 사용하여 비밀 회전 프로세스를 완료합니다.

배포 속성 확인

리소스 공급자는 버전 지정된 제품 패키지로 Azure Stack Hub 환경에 배포됩니다. 패키지는 '<product-id>.<installed-version>' 형식으로 고유한 패키지 ID가 할당됩니다. 여기서 <product-id>는 리소스 공급자를 나타내는 고유 문자열이고 <installed-version>는 특정 버전을 나타냅니다. 각 패키지와 연결된 비밀은 Azure Stack Hub Key Vault 서비스에 저장됩니다.

관리자 권한 PowerShell 콘솔을 열고 다음 단계를 완료하여 리소스 공급자의 비밀을 회전하는 데 필요한 속성을 결정합니다.

  1. 운영자 자격 증명을 사용하여 Azure Stack Hub 환경에 로그인합니다. PowerShell 로그인 스크립트에 대한 PowerShell을 사용하여 Azure Stack Hub에 연결을 참조하세요. AzureRM 대신 PowerShell Az cmdlet을 사용하고 엔드포인트 URL, 디렉터리 테넌트 이름과 같은 모든 자리 표시자 값을 바꾸어야 합니다.

  2. Get-AzsProductDeployment cmdlet을 실행하여 최신 리소스 공급자 배포 목록을 검색합니다. 반환된 "value" 컬렉션에는 배포된 각 리소스 공급자에 대한 요소가 포함됩니다. 관심 있는 리소스 공급자를 찾고 다음 속성의 값을 기록해 둡니다.

    • "name" - 값의 두 번째 세그먼트에 리소스 공급자 제품 ID가 포함되어 있습니다.
    • "properties"."deployment"."version" - 현재 배포된 버전 번호가 포함되어 있습니다.

    다음 예제에서는 컬렉션의 첫 번째 요소에서 Event Hubs RP 배포를 확인합니다. 이 요소는 제품 ID "microsoft.eventhub"가 , 버전 "1.2003.0.0"입니다.

    PS C:\WINDOWS\system32> Get-AzsProductDeployment -AsJson
    VERBOSE: GET https://adminmanagement.myregion.mycompany.com/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productDeployments?api-version=2019-01-01 with 0-char payload
    VERBOSE: Received 2656-char response, StatusCode = OK
    {
        "value":  [
                      {
                          "id":  "/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productDeployments/microsoft.eventhub",
                          "name":  "global/microsoft.eventhub",
                          "type":  "Microsoft.Deployment.Admin/locations/productDeployments",
                          "properties":  {
                                             "status":  "DeploymentSucceeded",
                                             "subscriptionId":  "b37ae55a-a6c6-4474-ba97-81519412adf5",
                                             "deployment":  {
                                                                "version":  "1.2003.0.0",
                                                                "actionPlanInstanceResourceId":"/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/actionplans/abcdfcd3-fef0-z1a3-z85d-z6ceb0f31e36",
                                                                "parameters":  {
    
                                                                               }
                                                            },
                                             "lastSuccessfulDeployment":  {
                                                                              "version":  "1.2003.0.0",
                                                                              "actionPlanInstanceResourceId":"/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/actionplans/abcdfcd3-fef0-z1a3-z85d-z6ceb0f31e36",
                                                                              "parameters":  {
    
                                                                                             }
                                                                          },
                                             "provisioningState":  "Succeeded"
                                         }
                      },
                      {
                      ...
                      }
                  ]
    }
    
  3. 리소스 공급자 제품 ID 및 버전을 연결하여 리소스 공급자의 패키지 ID를 구성합니다. 예를 들어 이전 단계에서 도출한 값을 사용하면 Event Hubs RP 패키지 ID는 microsoft.eventhub.1.2003.0.0입니다.

  4. 이전 단계에서 구성한 패키지 ID를 사용하여 Get-AzsProductSecret -PackageId를 실행하고 리소스 공급자가 사용 중인 비밀 유형의 목록을 검색합니다. 반환된 value 컬렉션에서 "Certificate" 속성의 "properties"."secretKind" 값이 포함된 요소를 찾습니다. 이 요소에는 RP의 인증서 비밀에 대한 속성이 포함되어 있습니다. 이 인증서 비밀에 할당된 이름을 적어 둡니다. 이 이름은 "properties" 바로 위에 있는 "name" 속성의 마지막 세그먼트입니다.

    다음 예제에서는 Event Hubs RP에 대해 반환된 비밀 컬렉션에 라는 aseh-ssl-gateway-pfx비밀이 "Certificate" 포함되어 있습니다.

    PS C:\WINDOWS\system32> Get-AzsProductSecret -PackageId 'microsoft.eventhub.1.2003.0.0' -AsJson
    VERBOSE: GET
    https://adminmanagement.myregion.mycompany.com/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productPackages/microsoft.eventhub.1.2003.0.0/secrets?api-version=2019-01-01 with 0-char payload
    VERBOSE: Received 617-char response, StatusCode = OK
    {
        "value":  [
                        {
                            "id":  "/subscriptions/ze22ca96-z546-zbc6-z566-z35f68799816/providers/Microsoft.Deployment.Admin/locations/global/productPackages/microsoft.eventhub.1.2003.0.0/secrets/aseh-ssl-gateway-pfx",
                            "name":  "global/microsoft.eventhub.1.2003.0.0/aseh-ssl-gateway-pfx",
                            "type":  "Microsoft.Deployment.Admin/locations/productPackages/secrets",
                            "properties":  {
                                            "secretKind":  "Certificate",
                                            "description":  "Event Hubs gateway SSL certificate.",
                                            "expiresAfter":  "P730D",
                                            "secretDescriptor":  {
    
                                                                    },
                                            "secretState":  {
                                                                "status":  "Deployed",
                                                                "rotationStatus":  "None",
                                                                "expirationDate":  "2022-03-31T00:16:05.3068718Z"
                                                            },
                                            "provisioningState":  "Succeeded"
                                        }
                        },
                        ...
                    ]
    }
    

비밀 회전

  1. Set-AzsProductSecret cmdlet을 사용하여 새 인증서를 Key Vault로 가져올 수 있습니다. 이 인증서는 회전 프로세스에 사용됩니다. 스크립트를 실행하기 전에 변수 자리 표시자 값을 적절하게 바꿉니다.

    자리 표시자 Description 예제 값
    <product-id> 최신 리소스 공급자 배포의 제품 ID입니다. microsoft.eventhub
    <installed-version> 최신 리소스 공급자 배포의 버전입니다. 1.2003.0.0
    <cert-secret-name> 인증서 암호가 저장되는 이름입니다. aseh-ssl-gateway-pfx
    <cert-pfx-file-path> 인증서 PFX 파일의 경로입니다. C:\dir\eh-cert-file.pfx
    <pfx-password> 인증서에 할당된 암호입니다. PFX 파일. strong@CertSecret6
    $productId = '<product-id>'
    $packageId = $productId + '.' + '<installed-version>'
    $certSecretName = '<cert-secret-name>' 
    $pfxFilePath = '<cert-pfx-file-path>'
    $pfxPassword = ConvertTo-SecureString '<pfx-password>' -AsPlainText -Force   
    Set-AzsProductSecret -PackageId $packageId -SecretName $certSecretName -PfxFileName $pfxFilePath -PfxPassword $pfxPassword -Force
    
  2. 마지막으로 cmdlet을 Invoke-AzsProductRotateSecretsAction 사용하여 내부 및 외부 비밀을 회전합니다.

    참고

    회전 프로세스를 완료하는 데 약 3.5~4시간이 걸립니다.

    Invoke-AzsProductRotateSecretsAction -ProductId $productId
    

    Marketplace 서비스에서 리소스 공급자를 선택하여 PowerShell 콘솔에서 또는 관리자 포털에서 비밀 회전 진행률을 모니터링할 수 있습니다.

    secret-rotation-progress

문제 해결

비밀 회전은 오류 없이 성공적으로 완료되어야 합니다. 관리자 포털에서 다음 조건이 발생하는 경우 지원 요청을 엽니다 .

  • Event Hubs 리소스 공급자에 연결하는 문제를 포함한 인증 문제
  • 리소스 공급자를 업그레이드하거나 구성 매개 변수를 편집할 수 없습니다.
  • 사용 메트릭이 표시되지 않습니다.
  • 청구서가 생성되지 않습니다.
  • 백업이 발생하지 않습니다.

다음 단계

Azure Stack Hub 인프라 비밀 회전에 대한 자세한 내용은 Azure Stack Hub에서 비밀 회전을 참조하세요.