DICOM 서비스에 대한 고객 관리형 키 구성

CMK(고객 관리형 키)를 사용하면 사용자가 만들고 관리하는 키를 통해 조직의 데이터에 대한 액세스를 보호하고 제어할 수 있습니다. Azure Key Vault를 사용하여 CMK를 만들고 관리한 다음, 키를 사용하여 DICOM® 서비스에 저장된 데이터를 암호화합니다.

필수 조건

  • 고객 관리형 키의 모범 사례를 잘 알고 있어야 합니다.

  • Azure Key Vault에서 DICOM 서비스에 대한 키를 추가합니다. 단계는 Azure Key Vault에 키 추가를 참조하세요. 고객 관리형 키는 다음 요구 사항을 충족해야 합니다.

    • 키의 버전이 지정됩니다.

    • 키 형식은 RSA-HSM 또는 RSA입니다.

    • 키는 2048비트 또는 3072비트입니다.

    • 키 자격 증명 모음은 DICOM 서비스와 동일한 Azure 테넌트에 있습니다.

    • 방화벽과 함께 키 자격 증명 모음을 사용하여 공용 액세스를 사용하지 않도록 설정하는 경우 신뢰할 수 있는 Microsoft 서비스가 이 방화벽을 우회하도록 허용하는 옵션을 사용하도록 설정해야 합니다.

    • DICOM 서비스의 암호화 키가 손실되지 않도록 하려면 키 자격 증명 모음 또는 관리되는 HSM에 일시 삭제제거 보호가 사용하도록 설정되어 있어야 합니다. 이러한 기능을 사용하면 특정 시간(기본 90일) 동안 삭제된 키를 복구하고 해당 기간이 종료될 때까지 영구 삭제를 차단할 수 있습니다.

DICOM 서비스에 대한 관리 ID 사용

시스템이 할당한 관리 ID 또는 사용자가 할당한 관리 ID를 사용할 수 있습니다. 시스템 할당 ID와 사용자 할당 관리 ID의 차이점을 알아보려면 관리 ID 유형을 참조하세요.

시스템 할당 관리 ID

  1. Azure Portal에서 DICOM 인스턴스로 이동합니다. 왼쪽 창에서 ID를 선택합니다.

  2. ID 페이지에서 시스템 할당 탭을 선택합니다.

  3. 상태 필드를 켜기로 설정합니다.

  4. 저장을 선택합니다.

Screenshot showing the system-assigned managed identity toggle on the Identity page.

사용자 할당 관리 ID

사용자 할당 관리 ID를 추가하는 단계는 사용자 할당 관리 ID 관리를 참조하세요.

Key Vault 암호화 서비스 암호화 사용자 역할 할당

시스템 할당 관리 ID에는 키에 액세스하고 이를 사용하여 데이터를 암호화하고 복호화하려면 Key Vault 암호화 서비스 암호화 사용자 역할이 필요합니다.

  1. Azure Portal에서 키 자격 증명 모음으로 이동한 후 왼쪽 창에서 IAM(액세스 제어)을 선택합니다.

  2. 액세스 제어(IAM) 페이지에서 역할 할당 추가를 선택합니다.

Screenshot of the Access control (IAM) view for the key vault.

  1. 역할 할당 추가 페이지에서 Key Vault 암호화 서비스 암호화 사용자 역할을 선택합니다.

  2. 다음을 선택합니다.

Screenshot showing the Key Vault Crypto Officer role selected on the role assignments tab.

  1. 멤버 탭에서 관리 ID, +멤버 선택을 차례로 선택합니다.

  2. 관리 ID 선택 창의 관리 ID 드롭다운 목록에서 DICOM 서비스를 선택합니다. DICOM 서비스를 선택합니다.

  3. 관리 ID 선택 창에서 선택을 선택합니다.

Screenshot of selecting the system assigned managed identity in the Add role assignment page.

  1. 역할 할당을 검토한 다음 검토 + 할당을 선택합니다.

Screenshot of the role assignment with the review + assign action.

암호화 키로 DICOM 서비스 업데이트

키를 추가한 후에는 키 URL로 DICOM 서비스를 업데이트해야 합니다.

  1. 키 자격 증명 모음에서 를 선택합니다.

  2. DICOM 서비스에 대한 키를 선택합니다.

Screenshot of the Keys page and the key to use with the DICOM service.

  1. 키 버전을 선택합니다.

  2. 키 식별자를 복사합니다. ARM 템플릿을 사용하여 키를 업데이트할 때 키 URL이 필요합니다.

Screenshot showing the key version details and the copy action for the Key Identifier.

Azure Portal을 사용하여 키 업데이트

  1. Azure Portal에서 DICOM 서비스로 이동한 후 왼쪽 창에서 암호화를 선택합니다.

  2. 암호화 유형으로 고객 관리형 키 사용를 선택합니다.

  3. 키 자격 증명 모음 및 키를 선택하거나 이전에 만든 키의 키 URI를 입력합니다.

  4. 이전에 구성한 관리 ID 유형과 일치하는 ID 유형(시스템 할당 또는 사용자 할당)을 선택합니다.

  5. 고객 관리형 키를 사용하도록 DICOM 서비스를 업데이트하려면 저장을 선택합니다.

Screenshot of the Encryption view, showing the selection of the Customer-managed key option, key vault settings, identity type settings, and Save button.

ARM 템플릿을 사용하여 키 업데이트

Azure Portal을 사용하여 사용자 지정 템플릿을 배포하고 ARM 템플릿 중 하나를 사용하여 키를 업데이트합니다. 자세한 내용은 Azure Portal을 사용하여 ARM 템플릿 만들기 및 배포를 참조하세요.

시스템이 할당한 관리 ID의 ARM 템플릿

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "workspaceName": {
            "type": "String"
        },
        "dicomServiceName": {
            "type": "String"
        },
        "keyEncryptionKeyUrl": {
            "type": "String"
        },
        "region": {
            "defaultValue": "West US 3",
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.HealthcareApis/workspaces/dicomservices",
            "apiVersion": "2023-06-01-preview",
            "name": "[concat(parameters('workspaceName'), '/', parameters('dicomServiceName'))]",
            "location": "[parameters('region')]",
            "identity": {
                "type": "SystemAssigned"
            },
            "properties": {
                "encryption": {
                    "customerManagedKeyEncryption": {
                        "keyEncryptionKeyUrl": "[parameters('keyEncryptionKeyUrl')]"
                    }
                }
            }
        }
    ]
}

사용자가 할당한 관리 ID의 ARM 템플릿

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "workspaceName": {
            "type": "String"
        },
        "dicomServiceName": {
            "type": "String"
        },
        "keyVaultName": {
            "type": "String"
        },
        "keyName": {
            "type": "String"
        },
        "userAssignedIdentityName": {
            "type": "String"
        },
        "roleAssignmentName": {
            "type": "String"
        },
        "region": {
            "defaultValue": "West US 3",
            "type": "String"
        },
        "tenantId": {
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.KeyVault/vaults",
            "apiVersion": "2022-07-01",
            "name": "[parameters('keyVaultName')]",
            "location": "[parameters('region')]",
            "properties": {
              "accessPolicies": [],
              "enablePurgeProtection": true,
              "enableRbacAuthorization": true,
              "enableSoftDelete": true,
              "sku": {
                "family": "A",
                "name": "standard"
              },
              "tenantId": "[parameters('tenantId')]"
            }
        },
        {
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
            "apiVersion": "2023-01-31",
            "name": "[parameters('userAssignedIdentityName')]",
            "location": "[parameters('region')]"
        },
        {
            "type": "Microsoft.KeyVault/vaults/keys",
            "apiVersion": "2022-07-01",
            "name": "[concat(parameters('keyVaultName'), '/', parameters('keyName'))]",
            "properties": {
              "attributes": {
                "enabled": true
              },
              "curveName": "P-256",
              "keyOps": [ "unwrapKey","wrapKey" ],
              "keySize": 2048,
              "kty": "RSA"
            },
            "dependsOn": [
                "[resourceId('Microsoft.KeyVault/vaults/', parameters('keyVaultName'))]"
            ]
        },
        {
            "type": "Microsoft.Authorization/roleAssignments",
            "apiVersion": "2021-04-01-preview",
            "name": "[guid(parameters('roleAssignmentName'))]",
            "properties": {
              "roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', '14b46e9e-c2b7-41b4-b07b-48a6ebf60603')]",
              "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName'))).principalId]"
            },
            "dependsOn": [
                "[resourceId('Microsoft.KeyVault/vaults/keys', parameters('keyVaultName'), parameters('keyName'))]",
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', parameters('userAssignedIdentityName'))]"
            ]
        },
        {
            "type": "Microsoft.HealthcareApis/workspaces",
            "name": "[parameters('workspaceName')]",
            "apiVersion": "2022-05-15",
            "location": "[parameters('region')]"
        },
        {
            "type": "Microsoft.HealthcareApis/workspaces/dicomservices",
            "apiVersion": "2023-06-01-preview",
            "name": "[concat(parameters('workspaceName'), '/', parameters('dicomServiceName'))]",
            "location": "[parameters('region')]",
            "dependsOn": [
                "[resourceId('Microsoft.HealthcareApis/workspaces', parameters('workspaceName'))]",
                "[resourceId('Microsoft.Authorization/roleAssignments', guid(parameters('roleAssignmentName')))]"
            ],
            "identity": {
                "type": "userAssigned",
                "userAssignedIdentities": {
                    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('userAssignedIdentityName'))]": {}
                }
            },
            "properties": {
                "encryption": {
                    "customerManagedKeyEncryption": {
                        "keyEncryptionKeyUrl": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('keyVaultName'), parameters('keyName'))).keyUriWithVersion]"
                    }
                }
            }
        }
    ]
}
  1. 메시지가 표시되면 리소스 그룹, 지역, 작업 영역 및 DICOM 서비스 이름에 대한 값을 선택합니다.

    • 시스템이 할당한 관리 ID를 사용하는 경우 키 암호화 키 URL 필드의 키 자격 증명 모음에서 복사한 키 식별자를 입력합니다.
    • 사용자가 할당한 관리 ID를 사용하는 경우 키 자격 증명 모음 이름, 키 이름, 사용자 할당 ID 이름, 테넌트 ID의 값을 입력합니다.
  2. 검토 + 만들기를 선택하여 키에 업데이트를 배포합니다.

Screenshot of the deployment template with details, including Key Encryption Key URL filled in.

키 액세스 손실에서 복구

DICOM 서비스가 제대로 작동하려면 항상 키 자격 증명 모음의 키에 액세스할 수 있어야 합니다. 그러나 다음을 포함하여 서비스에서 키에 대한 액세스 권한을 잃을 수 있는 시나리오가 있습니다.

  • 키를 사용할 수 없게 되거나 키가 키 자격 증명 모음에서 삭제됩니다.

  • DICOM 서비스 시스템 할당 관리 ID가 사용하지 않도록 설정되었습니다.

  • DICOM 서비스 시스템 할당 관리 ID는 키 자격 증명 모음에 대한 액세스 권한을 잃게 됩니다.

DICOM 서비스가 키에 액세스할 수 없는 시나리오에서 API 요청은 500 오류와 함께 반환되며 키에 대한 액세스가 복원될 때까지 데이터에 액세스할 수 없습니다. DICOM 서비스의 Azure 리소스 상태 보기는 주요 액세스 문제를 진단하는 데 도움이 됩니다.

키 액세스가 30분 이상 손실된 경우 DICOM 서비스를 업데이트하여 키 액세스를 새로 고칩니다. 자세한 내용은 암호화 키로 DICOM 서비스 업데이트를 참조하세요. DICOM 서비스도 업데이트하지 않으면 키 액세스가 복원되어도 계속 사용할 수 없습니다.

관리 ID 변경 후 DICOM 서비스 업데이트

DICOM 서비스를 다른 테넌트 또는 구독으로 이동하는 등 관리 ID를 변경하는 경우 ARM 템플릿 배포를 사용하여 서비스를 수동으로 업데이트할 때까지 DICOM 서비스는 키에 액세스할 수 없습니다. 단계는 ARM 템플릿을 사용하여 암호화 키 업데이트를 참조하세요.

Screenshot of the encryption view with Encryption type showing Customer-managed key.

DICOM 서비스 만들 때 키 구성

DICOM 서비스와 함께 사용자 지정 관리 ID를 사용하는 경우 DICOM 서비스를 만드는 동시에 고객 관리형 키를 구성할 수 있습니다.

  1. DICOM 서비스 만들기 페이지에서 DICOM 서비스 이름을 입력합니다.

  2. 다음: 보안을 선택합니다.

Screenshot of the Create DICOM service view with the DICOM service name filled in.

  1. 보안 탭의 암호화 섹션에서 고객 관리형 키를 선택합니다.

  2. 키 자격 증명 모음에서 선택 또는 키 URI 입력을 선택한 다음, 키를 입력합니다.

  3. 사용자가 할당한 관리 ID를 사용할 ID 선택을 선택합니다. 사용자가 할당한 관리 ID 선택 페이지에서 관리 ID를 필터링한 다음 선택합니다. 추가를 선택합니다.

  4. 보안 탭에서 검토 + 만들기를 선택합니다. Screenshot of the Security tab with the Customer-managed key option selected.

  5. 검토 + 만들기 탭에서 구성 옵션의 요약 및 유효성 검사 성공 메시지를 검토합니다. 고객 관리형 키를 사용하여 DICOM 서비스를 배포하려면 만들기를 선택합니다.

Screenshot of the Review + create tab with the selected options and validation success message shown.

참고 항목

DICOM®은 의료 정보의 디지털 통신과 관련된 표준 간행물에 대한 미국 전기공업회의 등록 상표입니다.