관리형 HSM 로깅

하나 이상의 관리형 HSM을 만든 후에는 HSM에 액세스하는 방법, 시기 및 사용자를 모니터링하려고 할 수도 있습니다. Azure 스토리지 계정에 제공하는 정보를 저장하는 로깅을 사용하여 이를 수행할 수 있습니다. 지정한 스토리지 계정에 대해 insights-logs-auditevent라는 새 컨테이너가 자동으로 만들어집니다. 여러 관리형 HSM에 대한 로그를 수집하는 데 이 동일한 스토리지 계정을 사용할 수 있습니다.

관리형 HSM 작업 후 최대 10분 동안 로깅 정보에 액세스할 수 있습니다. 대부분의 경우 이것보다 빠릅니다. 스토리지 계정의 로그 관리에 따라 다릅니다.

  • 표준 Azure 액세스 제어 메서드를 사용하여 액세스할 수 있는 사용자를 제한하여 로그를 보호합니다.
  • 더 이상 스토리지 계정에 유지하지 않으려는 로그를 삭제합니다.

이 자습서를 사용하여 관리형 HSM 로깅을 시작할 수 있습니다. 스토리지 계정을 만들고, 로깅을 사용하도록 설정하고, 수집된 로그 정보를 해석합니다.

참고 항목

이 자습서는 관리형 HSM 또는 키를 만드는 방법에 대한 지침을 다루지 않습니다. 이 문서에서는 진단 로깅을 업데이트하기 위한 Azure CLI 지침을 제공합니다.

필수 조건

이 문서의 단계를 완료하려면 다음 항목이 있어야 합니다.

Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.

옵션 예제/링크
코드 또는 명령 블록의 오른쪽 상단에서 시도를 선택합니다. 시도를 선택해도 코드 또는 명령이 Cloud Shell에 자동으로 복사되지 않습니다. Azure Cloud Shell에 대한 사용 예제를 보여 주는 스크린샷
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 단추를 선택하여 브라우저에서 Cloud Shell을 엽니다. Azure Cloud Shell을 시작하는 단추입니다.
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다. Azure Portal의 Cloud Shell 단추를 보여 주는 스크린샷

Azure Cloud Shell을 사용하려면:

  1. Cloud Shell을 시작합니다.

  2. 코드 블록(또는 명령 블록)에서 복사 단추를 선택하여 코드 또는 명령을 복사합니다.

  3. Windows 및 Linux에서 Ctrl+Shift+V를 선택하거나 macOS에서 Cmd+Shift+V를 선택하여 코드 또는 명령을 Cloud Shell 세션에 붙여넣습니다.

  4. Enter를 선택하여 코드 또는 명령을 실행합니다.

Azure 구독에 연결

키 로깅을 설정하는 첫 번째 단계는 Azure CLI를 로깅하려는 관리형 HSM으로 가리키는 것입니다.

az login

CLI를 통한 로그인 옵션에 대한 자세한 내용은 Azure CLI로 로그인을 살펴보세요.

관리형 HSM을 만드는 데 사용한 구독을 지정해야 할 수도 있습니다. 다음 명령을 입력하여 계정에 대한 구독을 확인합니다.

관리형 HSM 및 스토리지 계정 식별

hsmresource=$(az keyvault show --hsm-name ContosoMHSM --query id -o tsv)
storageresource=$(az storage account show --name ContosoMHSMLogs --query id -o tsv)

로깅 사용

관리형 HSM에 대한 로깅을 사용하도록 설정하려면 새 스토리지 계정 및 관리형 HSM에 대해 만든 변수와 함께 az monitor diagnostic-settings create 명령을 사용합니다. 또한 -Enabled 플래그를 $true로 설정하고, 범주를 AuditEvent(관리형 HSM 로깅에 대한 유일한 범주)로 설정합니다.

이 출력에서는 이제 관리형 HSM에 대한 로깅을 사용하도록 설정되었음을 확인하고, 정보를 스토리지 계정에 저장합니다.

필요에 따라 오래된 로그가 자동으로 삭제되도록 로그 보존 정책을 설정할 수 있습니다. 예를 들어 -RetentionEnabled 플래그를 $true로 설정하여 보존 정책을 설정하고, 90일보다 오래된 로그가 자동으로 삭제되도록 -RetentionInDays 매개 변수를 90으로 설정합니다.

az monitor diagnostic-settings create --name ContosoMHSM-Diagnostics --resource $hsmresource --logs '[{"category": "AuditEvent","enabled": true}]' --storage-account $storageresource

다음이 로깅됩니다.

  • 인증된 모든 REST API 요청(예: 액세스 권한, 시스템 오류, 방화벽 차단 또는 잘못된 요청으로 인해 실패한 요청)
  • 태그와 같은 특성을 만들고 삭제하고 업데이트하는 작업을 포함하여 관리형 HSM 리소스 자체에 대한 관리형 평면 작업입니다.
  • 초기화 및 다운로드, 초기화 복구, 업로드와 같은 보안 도메인 관련 작업
  • 전체 HSM 백업, 복원 및 선택적 복원 작업
  • 역할 할당 만들기/보기/삭제 및 사용자 지정 역할 정의 만들기/보기/삭제와 같은 역할 관리 작업
  • 다음을 포함하여 키에 대한 작업
    • 키 만들기, 수정 또는 삭제
    • 키 서명, 확인, 암호화, 암호 해독, 래핑 및 래핑 해제, 키 나열
    • 키 백업, 복원, 제거
    • 키 릴리스
  • 404 응답을 생성하는 잘못된 경로입니다.

로그에 액세스

관리형 HSM 로그는 제공한 스토리지 계정의 insights-logs-auditevent 컨테이너에 저장됩니다. 로그를 보려면 Blob을 다운로드해야 합니다. Azure Storage에 대한 자세한 내용은 Azure CLI를 사용하여 Blob 만들기, 다운로드 및 나열을 참조하세요.

개별 Blob은 JSON 형식으로 텍스트로 저장됩니다. 로그 항목 예제를 살펴보겠습니다. 아래 예제에서는 전체 백업을 만드는 요청이 관리형 HSM으로 전송되는 경우의 로그 항목을 보여 줍니다.

[
  {
    "TenantId": "{tenant-id}",
    "time": "2020-08-31T19:52:39.763Z",
    "resourceId": "/SUBSCRIPTIONS/{subscription-id}/RESOURCEGROUPS/CONTOSORESOURCEGROUP/PROVIDERS/MICROSOFT.KEYVAULT/MANAGEDHSMS/CONTOSOMHSM",
    "operationName": "BackupCreate",
    "operationVersion": "7.0",
    "category": "AuditEvent",
    "resultType": "Success",
    "properties": {
        "PoolType": "M-HSM",
        "sku_Family": "B",
        "sku_Name": "Standard_B1"
    },
    "durationMs": 488,
    "callerIpAddress": "X.X.X.X",
    "identity": "{\"claim\":{\"appid\":\"{application-id}\",\"http_schemas_microsoft_com_identity\":{\"claims\":{\"objectidentifier\":\"{object-id}\"}},\"http_schemas_xmlsoap_org_ws_2005_05_identity\":{\"claims\":{\"upn\":\"admin@contoso.com\"}}}}",
    "clientInfo": "azsdk-python-core/1.7.0 Python/3.8.2 (Linux-4.19.84-microsoft-standard-x86_64-with-glibc2.29) azsdk-python-azure-keyvault/7.2",
    "correlationId": "8806614c-ebc3-11ea-9e9b-00155db778ad",
    "subnetId": "(unknown)",
    "httpStatusCode": 202,
    "PoolName": "mhsmdemo",
    "requestUri": "https://ContosoMHSM.managedhsm.azure.net/backup",
    "resourceGroup": "ContosoResourceGroup",
    "resourceProvider": "MICROSOFT.KEYVAULT",
    "resource": "ContosoMHSM",
    "resourceType": "managedHSMs"
  }
]

다음 단계