Azure Digital Twins 보호

이 문서에서는 Azure Digital Twins 보안 모범 사례를 설명합니다. 역할 및 권한, 관리 ID, Azure Private Link를 사용하는 프라이빗 네트워크 액세스, 서비스 태그, 미사용 데이터 암호화, CORS(원본 간 리소스 공유)를 다룹니다.

Azure Digital Twins는 보안을 위해 배포 과정에서 특정 데이터, 리소스 및 작업에 대한 정확한 액세스 제어를 가능하게 합니다. 이는 Azure RBAC(Azure 역할 기반 액세스 제어)라는 세분화된 역할 및 권한 관리 전략을 통해 수행됩니다.

Azure Digital Twins는 미사용 데이터 암호화도 지원합니다.

Azure RBAC를 사용한 역할 및 권한

Azure RBAC는 Microsoft Entra ID와의 통합을 통해 Azure Digital Twins에 제공됩니다.

Azure RBAC를 사용하여 사용자, 그룹 또는 애플리케이션 서비스 주체일 수 있는 보안 주체에 권한을 부여할 수 있습니다. 보안 주체는 Microsoft Entra ID로 인증되고 OAuth 2.0 토큰을 받습니다. 이 토큰은 Azure Digital Twins 인스턴스에 대한 액세스 요청의 권한을 부여하는 데 사용할 수 있습니다.

인증 및 권한 부여

Microsoft Entra ID를 사용하면 액세스는 2단계 프로세스로 이루어집니다. 보안 주체(사용자, 그룹 또는 애플리케이션)가 Azure Digital Twins에 액세스하려고 할 때 요청을 인증하고 권한 부여해야 합니다.

  1. 첫째, 보안 주체의 ID가 인증되고 OAuth 2.0 토큰이 반환됩니다.
  2. 그 다음, 토큰은 지정된 리소스에 대한 액세스 권한을 부여하기 위해 Azure Digital Twins 서비스에 요청의 일부로 전달됩니다.

인증 단계에서는 런타임 시 OAuth 2.0 액세스 토큰을 포함하는 애플리케이션 요청이 필요합니다. 애플리케이션이 Azure Functions 앱과 같은 Azure 엔터티 내에서 실행되는 경우 관리 ID를 사용하여 리소스에 액세스할 수 있습니다. 관리 ID에 대한 자세한 내용은 다음 섹션을 참조하세요.

권한 부여 단계를 수행하려면 Azure 역할을 보안 주체에 할당해야 합니다. 보안 주체에 할당된 역할에 따라 보안 주체가 가지는 권한이 결정됩니다. Azure Digital Twins는 Azure Digital Twins 리소스에 대한 권한 세트를 포함하는 Azure 역할을 제공합니다. 이러한 역할은 이 문서의 뒷부분에 설명되어 있습니다.

Azure에서 지원되는 역할 및 역할 할당에 대한 자세한 내용은 Azure RBAC 설명서의 여러 역할 이해를 참조하세요.

관리 ID를 사용하여 인증

Azure 리소스용 관리 ID는 애플리케이션 코드가 실행되는 배포와 관련된 보안 ID를 만들 수 있도록 하는 Azure 간 기능입니다. 그런 다음, 애플리케이션에 필요한 특정 Azure 리소스에 액세스하기 위한 사용자 지정 권한을 부여하는 액세스 제어 역할에 해당 ID를 연결할 수 있습니다.

관리 ID를 사용하는 경우 Azure 플랫폼에서 이 런타임 ID를 관리합니다. ID 자체나 액세스해야 하는 리소스에 대한 액세스 키를 애플리케이션 코드나 구성에 저장하고 보호할 필요는 없습니다. Azure App Service 애플리케이션 내에서 실행되는 Azure Digital Twins 클라이언트 앱은 SAS 규칙 및 키 또는 기타 액세스 토큰을 처리할 필요가 없습니다. 클라이언트 앱에는 Azure Digital Twins 네임스페이스의 엔드포인트 주소만 필요합니다. 앱이 연결되면 Azure Digital Twins는 관리 엔터티의 컨텍스트를 클라이언트에 바인딩합니다. 관리 ID와 연결되면 Azure Digital Twins 클라이언트는 모든 권한 부여된 작업을 수행할 수 있습니다. 그런 다음, 관리 엔터티를 Azure Digital Twins Azure 역할(아래 설명)과 연결하여 권한을 부여합니다.

권한 부여: Azure Digital Twins에 대한 Azure 역할

Azure는 Azure Digital Twins 데이터 평면 API에 대한 액세스 권한을 부여하기 위해 두 가지 Azure 기본 제공 역할을 제공합니다. 이름 또는 ID로 역할을 참조할 수 있습니다.

기본 제공 역할 설명 ID
Azure Digital Twins 데이터 소유자 Azure Digital Twins 리소스에 대한 모든 권한을 제공합니다. bcd981a7-7f74-457b-83e1-cceb9e632ffe
Azure Digital Twins 데이터 읽기 권한자 Azure Digital Twins 리소스에 대한 읽기 액세스를 제공합니다. d57506d4-4c8d-48b1-8587-93c323f6a5a3

다음 두 가지 방법으로 역할을 할당할 수 있습니다.

Azure Digital Twins 인스턴스에 역할을 할당하는 방법에 대한 자세한 단계는 인스턴스 및 인증 설정을 참조하세요. 기본 제공 역할이 정의되는 방법에 대한 자세한 내용은 Azure RBAC 설명서의 역할 정의 이해를 참조하세요.

인스턴스에 대한 사용자 지정 Azure 역할을 만들 수도 있습니다. 이렇게 하면 트윈, 명령, 관계, 이벤트 경로, 작업, 모델, 쿼리를 비롯한 개별 데이터 영역의 특정 작업에 대한 권한을 부여할 수 있습니다. Azure의 사용자 지정 역할에 대한 자세한 내용은 Azure 사용자 지정 역할을 참조하세요.

역할 자동화

자동화된 시나리오에서 역할을 참조할 때는 이름 대신 ID로 참조하는 것이 좋습니다. 이름은 릴리스 간에 변경될 수 있지만 ID는 변경되지 않으므로 자동화에서 보다 안정적인 참조가 됩니다.

New-AzRoleAssignment(참조)와 같은 cmdlet으로 역할을 할당하는 경우 -RoleDefinitionName 대신 -RoleDefinitionId 매개 변수를 사용하여 역할 이름 대신 ID를 전달할 수 있습니다.

사용 권한 범위

Azure 역할을 보안 주체에 할당하기 전에 보안 주체에게 부여해야 하는 액세스 범위를 결정합니다. 모범 사례에 따르면 가능한 가장 좁은 범위만 부여하는 것이 가장 좋습니다.

다음 목록에서는 Azure Digital Twins 리소스에 액세스할 수 있는 범위를 지정할 수 있는 수준을 설명합니다.

  • 모델: 이 리소스에 대한 작업은 Azure Digital Twins에 업로드된 모델에 대한 제어를 지시합니다.
  • Query Digital Twins Graph: 이 리소스에 대한 작업은 Azure Digital Twins 그래프 내의 디지털 트윈에서 쿼리 작업을 실행하는 기능을 결정합니다.
  • Digital Twin: 이 리소스에 대한 작업은 트윈 그래프의 디지털 트윈에 대한 CRUD 작업을 제어합니다.
  • Digital Twin 관계: 이 리소스에 대한 작업은 트윈 그래프에서 디지털 트윈 간의 관계에 대한 CRUD 작업에 대한 제어를 정의합니다.
  • 이벤트 경로: 이 리소스에 대한 작업은 Azure Digital Twins에서 Event Hub, Event Grid 또는 Service Bus과 같은 엔드포인트 서비스로 이벤트를 라우팅할 권한을 결정합니다.

권한 문제 해결

사용자가 자신의 역할에서 허용하지 않는 작업을 수행하려고 하면 서비스 요청에서 403 (Forbidden) 읽기 오류가 수신될 수 있습니다. 자세한 정보 및 문제 해결 단계는 Azure Digital Twins 실패한 서비스 요청 문제 해결: 오류 403(사용할 수 없음)을 참조하세요.

다른 리소스에 액세스하기 위한 관리 ID

Azure Digital Twins 인스턴스에 대한 Microsoft Entra ID관리 ID를 설정하면 인스턴스가 Azure Key Vault와 같은 다른 Microsoft Entra 보호 리소스에 쉽게 액세스할 수 있습니다. ID는 Azure 플랫폼에서 관리되며, 비밀을 프로비저닝하거나 회전하지 않아도 됩니다. Microsoft Entra ID의 관리 ID에 대한 자세한 내용은 Azure 리소스의 관리 ID를 참조하세요.

Azure Digital Twins는 시스템이 할당한 그리고 사용자가 할당한 관리 ID 유형을 모두 지원합니다.

이러한 관리 ID 유형 중 하나를 사용하여 사용자 지정 정의 엔드포인트를 인증할 수 있습니다. Azure Digital Twines는 Event HubsService Bus 대상을 위한 엔드포인트에, 그리고 배달 못한 편지 이벤트를 위한 Azure Storage Container 엔드포인트에 대해 ID 기반 인증을 지원합니다. Event Grid 엔드포인트는 현재 관리 ID에 대해 지원되지 않습니다.

이벤트를 라우팅하는 데 사용할 수 있는 Azure Digital Twins 엔드포인트에 대해 관리 ID를 사용하도록 설정하는 방법에 대한 지침은 엔드포인트 옵션: ID 기반 인증을 참조하세요.

Event Hubs 및 Service Bus 엔드포인트로 이벤트를 라우팅하는 데 신뢰할 수 있는 Microsoft 서비스 사용

Azure Digital Twins는 해당 리소스의 퍼블릭 엔드포인트를 사용하여 이벤트 데이터를 보내기 위해 Event Hubs 및 Service Bus 엔드포인트에 연결할 수 있습니다. 그러나 이러한 리소스가 VNet에 바인딩된 경우 리소스에 대한 연결은 기본적으로 차단됩니다. 따라서 이 구성은 Azure Digital Twins가 이벤트 데이터를 리소스로 보내지 못하게 합니다.

이를 확인하기 위해 신뢰할 수 있는 Microsoft 서비스 옵션을 통해 Azure Digital Twins 인스턴스에서 Event Hubs 또는 Service Bus 리소스로의 연결을 사용하도록 설정합니다(Event Hubs용 신뢰할 수 있는 Microsoft 서비스Service Bus용 신뢰할 수 있는 Microsoft 서비스 참조).

신뢰할 수 있는 Microsoft 서비스 연결을 사용하도록 설정하려면 다음 단계를 완료해야 합니다.

  1. Azure Digital Twins 인스턴스는 시스템이 할당한 관리 ID를 사용해야 합니다. 이렇게 하면 다른 서비스에서 신뢰할 수 있는 Microsoft 서비스로 인스턴스를 찾을 수 있습니다. 인스턴스에서 시스템 관리 ID를 설정하는 지침은 인스턴스에 관리 ID 사용을 참조하세요.
  2. 시스템이 할당한 관리 ID가 프로비전되면 event Hubs 또는 Service Bus 엔드포인트에 액세스할 수 있는 인스턴스 관리 ID에 대한 권한을 부여합니다(이 기능은 Event Grid에서 지원되지 않음). 적절한 역할을 할당하는 지침은 ID에 Azure 역할 할당을 참조하세요.
  3. 방화벽이 구성된 Event Hubs 및 Service Bus 엔드포인트의 경우 신뢰할 수 있는 Microsoft 서비스가 이 방화벽을 무시하도록 허용 설정을 사용하도록 설정해야 합니다.

Azure Private Link는 Azure 리소스(예: Azure Event Hubs, Azure StorageAzure Cosmos DB)와 Azure Virtual Network(VNet)의 프라이빗 엔드포인트를 통해 Azure 호스팅 고객 및 파트너 서비스에 액세스할 수 있는 서비스입니다.

마찬가지로 Azure Digital Twin 인스턴스에 대한 프라이빗 액세스 엔드포인트를 사용하여 가상 네트워크에 위치한 클라이언트는 Private Link를 통해 REST API가 인스턴스에 안전하게 액세스하도록 할 수 있습니다. Azure Digital Twins 인스턴스에 대한 프라이빗 액세스 엔드포인트를 구성하면 Azure Digital Twins 인스턴스를 보호하고 공개적으로 노출되지 않도록 할 수 있습니다. 또한 Azure VNet(Virtual Network)에서 데이터가 반출되지 않도록 할 수 있습니다.

프라이빗 액세스 엔드포인트는 Azure VNet 주소 공간의 IP 주소를 사용합니다. 프라이빗 네트워크의 클라이언트와 Azure Digital Twins 인스턴스 간의 네트워크 트래픽은 VNet와 Microsoft 백본 네트워크의 Private Link를 통해 트래버스하여, 공용 인터넷에 노출되지 않습니다. 다음은 이 시스템을 시각적으로 표현한 것입니다.

Diagram showing a network that is a protected VNET with no public cloud access, connecting through Private Link to an Azure Digital Twins instance.

Azure Digital Twins 인스턴스에 대한 프라이빗 액세스 엔드포인트를 구성하면 Azure Digital Twins 인스턴스를 보호하고 공개적으로 노출되지 않도록 할 수 있을 뿐만 아니라 VNet에서 데이터가 반출되지 않도록 할 수 있습니다.

Azure Digital Twins용 Private Link를 설정하는 방법에 대한 지침은 Private Link로 프라이빗 액세스 사용을 참조하세요.

참고 항목

Azure Private Link를 사용하는 프라이빗 네트워크 액세스는 나머지 API를 통해 Azure Digital Twins에 액세스하는 데 적용됩니다. 이 기능은 Azure Digital Twins의 이벤트 라우팅 기능을 사용하는 송신 시나리오에는 적용되지 않습니다.

디자인 고려 사항

Azure Digital Twins용 Private Link로 작업할 때 고려해야 할 몇 가지 요소는 다음과 같습니다.

  • 가격 책정: 가격에 대한 자세한 내용은 Azure Private Link 가격 책정을 참조하세요.
  • 지역별 가용성: Azure Digital Twins용 Private Link는 Azure Digital Twins를 사용할 수 있는 모든 Azure 지역에서 사용할 수 있습니다.
  • Azure Digital Twins Explorer: Azure Digital Twins Explorer는 공용 액세스가 사용하지 않도록 설정된 Azure Digital Twins 인스턴스에 액세스할 수 없습니다. 그러나 Azure Functions를 사용하여 Azure Digital Twins Explorer 코드베이스를 클라우드에 비공개로 배포할 수 있습니다. 이를 수행하는 방법에 대한 지침은 Azure Digital Twins Explorer: 클라우드에서 실행을 참조하세요.
  • Azure Digital Twins 인스턴스당 최대 프라이빗 엔드포인트 수: 10
  • 기타 제한 사항: Private Link의 제한에 대한 자세한 내용은 Azure Private Link 설명서: 제한을 참조하세요.

서비스 태그

서비스 태그는 지정된 Azure 서비스의 IP 주소 접두사 그룹을 나타냅니다. Microsoft는 서비스 태그에 포함되는 주소 접두사를 관리하고 주소가 변경되면 서비스 태그를 자동으로 업데이트하여 네트워크 보안 규칙을 자주 업데이트할 때 발생하는 복잡성을 최소화합니다. 서비스 태그에 대한 자세한 내용은 가상 네트워크 태그를 참조하세요.

보안 규칙을 만들 때 특정 IP 주소 대신 서비스 태그를 사용하여 네트워크 보안 그룹 또는 Azure Firewall에서 네트워크 액세스 제어를 정의할 수 있습니다. 규칙의 적절한 원본 또는 대상 필드에 서비스 태그 이름(이 경우 AzureDigitalTwins)을 지정하면 해당 서비스에 대한 트래픽을 허용하거나 거부할 수 있습니다.

다음은 AzureDigitalTwins 서비스 태그의 세부 정보입니다.

태그 목적 인바운드 또는 아웃바운드를 사용할 수 있나요? 지역 범위를 지원할 수 있나요? Azure Firewall에서 사용할 수 있나요?
AzureDigitalTwins Azure Digital Twins
참고: 이 태그 또는 이 태그에 포함된 IP 주소를 사용하여 이벤트 경로에 구성된 엔드포인트에 대한 액세스를 제한할 수 있습니다.
인바운드

이벤트 경로 엔드포인트에 액세스하기 위해 서비스 태그 사용

다음은 Azure Digital Twins에서 서비스 태그를 사용하여 이벤트 경로 엔드포인트에 액세스하는 단계입니다.

  1. 먼저 Azure IP 범위 및 서비스 태그를 보여 주는 JSON 파일 참조인 Azure IP 범위 및 서비스 태그를 다운로드합니다.

  2. JSON 파일에서 "AzureDigitalTwins" IP 범위를 찾습니다.

  3. 엔드포인트에 연결된 외부 리소스(예: Event Grid, Event Hub, Service Bus 또는 배달 못한 편지 이벤트에 대한 Azure Storage)의 설명서를 참조하여 해당 리소스에 대한 IP 필터를 설정하는 방법을 확인하세요.

  4. 2단계의 IP 범위를 사용하여 외부 리소스에 대한 IP 필터를 설정합니다.

  5. 필요에 따라 정기적으로 IP 범위를 업데이트합니다. 범위는 시간이 지남에 따라 변경될 수 있으므로 정기적으로 확인하고 필요할 때 새로 고치는 것이 좋습니다. 이러한 업데이트의 빈도는 다를 수 있지만 일주일에 한 번 확인하는 것이 좋습니다.

미사용 데이터의 암호화

Azure Digital Twins는 데이터 센터에 기록된 미사용 및 전송 중인 데이터를 암호화하고, 액세스할 때 이를 해독합니다. 이 암호화는 Microsoft 관리 암호화 키를 사용하여 수행됩니다.

교차 출처 리소스 공유(CORS)

Azure Digital Twins는 현재 CORS(원본 간 리소스 공유)를 지원하지 않습니다. 따라서 브라우저 앱, API 관리(APIM) 인터페이스 또는 Power Apps 커넥터에서 REST API를 호출하는 경우 정책 오류가 표시될 수 있습니다.

이 오류를 해결하기 위해 다음 작업 중 하나를 수행할 수 있습니다.

  • 메시지에서 CORS 헤더 Access-Control-Allow-Origin을 제거합니다. 이 헤더는 응답을 공유할 수 있는지 여부를 나타냅니다.
  • 또는 CORS 프록시를 만들고 이를 통해 Azure Digital Twins REST API를 요청합니다.

다음 단계