다음을 통해 공유


Azure IoT 작업에서 보안 설정 사용

Azure IoT 작업에 대한 보안 설정에는 비밀 관리 설정과 클라우드 연결에 대한 사용자 할당 관리 ID가 포함됩니다. 예를 들어 OPC UA 서버 또는 데이터 흐름 엔드포인트입니다.

이 문서에서는 초기 배포 중에 보안 설정을 사용하도록 설정하지 않은 경우의 지침을 제공합니다.

필수 조건

  • 테스트 설정을 사용하여 배포된 Azure IoT Operations 인스턴스입니다. 예를 들어 Arc 지원 Kubernetes 클러스터에 Azure IoT 작업 배포의 지침에 따라 테스트 설정을 선택했습니다.

  • 개발 컴퓨터에 설치된 Azure CLI입니다. 이 시나리오에는 Azure CLI 버전 2.53.0 이상이 필요합니다. az --version을 사용하여 버전을 확인하고 필요한 경우 az upgrade를 사용하여 업데이트합니다. 자세한 내용은 Azure CLI 설치 방법을 참조하세요.

  • Azure CLI용 Connectedk8s 확장의 최신 버전입니다. 다음 명령을 사용하여 확장 프로그램을 추가하거나 최신 버전으로 업데이트합니다.

    az extension add --upgrade --name connectedk8s
    
  • Azure CLI용 Azure IoT 작업 확장입니다. 다음 명령을 사용하여 확장 프로그램을 추가하거나 최신 버전으로 업데이트합니다.

    az extension add --upgrade --name azure-iot-ops
    

보안 설정에 클러스터 사용

Azure IoT Operations 인스턴스에 비밀 동기화를 사용하도록 설정하려면 클러스터를 OIDC 발급자 및 워크로드 ID 페더레이션에 사용하도록 설정해야 합니다. 이 구성은 비밀 저장소 확장이 Azure 키 자격 증명 모음의 비밀을 동기화하고 에지에 Kubernetes 비밀로 저장하는 데 필요합니다.

AKS(Azure Kubernetes Service) 클러스터의 경우 클러스터를 만들 때만 OIDC 발급자 및 워크로드 ID 기능을 사용하도록 설정할 수 있습니다. AKS Edge Essentials의 클러스터의 경우 자동화된 스크립트는 기본적으로 이러한 기능을 사용하도록 설정합니다. Azure Local의 AKS 클러스터의 경우 필요한 기능이 없는 경우 Azure Arc 클러스터에서 사용하도록 설정된 AKS에서 워크로드 ID를 배포하고 구성하여 새 클러스터를 만드는 단계를 수행합니다.

Kubernetes의 k3s 클러스터의 경우 기존 클러스터를 업데이트할 수 있습니다. 이러한 기능을 사용하도록 설정하고 구성하려면 다음 단계를 사용합니다.

  1. OIDC 발급자 및 워크로드 ID를 사용하도록 클러스터를 업데이트합니다.

    az connectedk8s update -n <CLUSTER_NAME> -g <RESOURCE_GROUP> --enable-oidc-issuer --enable-workload-identity
    

    클러스터를 만들 때 OIDC 발급자 및 워크로드 ID 기능을 사용하도록 설정한 경우 이전 명령을 다시 실행할 필요가 없습니다. 다음 명령을 사용하여 클러스터에 대한 OIDC 발급자 및 워크로드 ID 기능의 상태를 확인합니다.

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query "{ClusterName:name, OIDCIssuerEnabled:oidcIssuerProfile.enabled, WorkloadIdentityEnabled:securityProfile.workloadIdentity.enabled}"
    
  2. 클러스터의 발급자 URL을 가져옵니다.

    az connectedk8s show -g <RESOURCE_GROUP> -n <CLUSTER_NAME> --query oidcIssuerProfile.issuerUrl --output tsv
    

    다음 단계에서 사용할 이 명령의 출력을 기록해 둡다.

  3. k3s 구성 파일을 만듭니다.

    sudo nano /etc/rancher/k3s/config.yaml
    
  4. 자리 표시자를 이전에 적어 두었던 클러스터 발급자 URL로 바꿔 <SERVICE_ACCOUNT_ISSUER> 서 파일에 다음 콘텐츠를 config.yaml 추가합니다.

    kube-apiserver-arg:
    - service-account-issuer=<SERVICE_ACCOUNT_ISSUER>
    - service-account-max-token-expiration=24h
    

    파일을 저장하고 Nano 편집기를 종료합니다.

  5. k3s 서비스를 다시 시작합니다.

    sudo systemctl restart k3s
    

비밀 관리 설정

Azure IoT 작업에 대한 비밀 관리는 비밀 저장소 확장을 사용하여 Azure 키 자격 증명 모음의 비밀을 동기화하고 에지에 Kubernetes 비밀로 저장합니다. 비밀 저장소 확장을 사용하려면 비밀이 저장되는 Azure Key Vault에 액세스할 수 있는 사용자 할당 관리 ID가 필요합니다. 자세한 내용은 Azure 리소스에 대한 관리 ID란?을 참조하세요.

비밀 관리를 설정하려면 다음을 수행합니다.

  1. 비밀을 저장하는 데 사용되는 Azure Key Vault 를 만들고 사용자 계정에 역할을 사용하여 비밀을Key Vault Secrets Officer 관리할 수 있는 권한을 부여합니다.

  2. 비밀 저장소 확장에 대한 사용자 할당 관리 ID 를 만듭니다.

  3. az iot ops secretsync enable 명령을 사용하여 비밀 동기화를 위해 Azure IoT Operations 인스턴스를 설정합니다. 이 명령은 다음을 수행합니다.

    • 사용자 할당 관리 ID를 사용하여 페더레이션 ID 자격 증명을 만듭니다.
    • Azure Key Vault에 액세스하기 위해 사용자가 할당한 관리 ID에 역할 할당을 추가합니다.
    • Azure IoT Operations 인스턴스와 연결된 최소 비밀 공급자 클래스를 추가합니다.
    # Variable block
    AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME>"
    KEYVAULT_NAME="<KEYVAULT_NAME>"
    
    #Get the resource ID of the user-assigned managed identity
    USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Get the resource ID of the key vault
    KEYVAULT_RESOURCE_ID=$(az keyvault show --name $KEYVAULT_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Enable secret synchronization
    az iot ops secretsync enable --instance $AIO_INSTANCE_NAME \
                                 --resource-group $RESOURCE_GROUP \
                                 --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID \
                                 --kv-resource-id $KEYVAULT_RESOURCE_ID
    

이제 비밀 동기화 설정이 완료되었으므로 Azure IoT Operations 배포에 대한 비밀 관리를 참조하여 Azure IoT Operations에서 비밀을 사용하는 방법을 알아볼 수 있습니다.

클라우드 연결에 대한 사용자 할당 관리 ID 설정

데이터 흐름 엔드포인트와 같은 일부 Azure IoT Operations 구성 요소는 클라우드 연결에 사용자 할당 관리 ID를 사용합니다. 비밀 관리를 설정하는 데 사용한 ID와는 별도의 ID를 사용하는 것이 좋습니다.

  1. 클라우드 연결에 사용되는 사용자 할당 관리 ID 를 만듭니다.

    참고 항목

    관리 ID를 사용할 클라우드 리소스에 대해 ID 권한을 부여해야 합니다.

  2. az iot ops identity assign 명령을 사용하여 Azure IoT Operations 인스턴스에 ID를 할당합니다. 또한 이 명령은 표시된 연결된 클러스터의 OIDC 발급자 및 Azure IoT Operations 서비스 계정을 사용하여 페더레이션 ID 자격 증명을 만듭니다.

    # Variable block
    AIO_INSTANCE_NAME="<AIO_INSTANCE_NAME>"
    RESOURCE_GROUP="<RESOURCE_GROUP>"
    USER_ASSIGNED_MI_NAME="<USER_ASSIGNED_MI_NAME FOR CLOUD CONNECTIONS>"
    
    #Get the resource ID of the user-assigned managed identity
    USER_ASSIGNED_MI_RESOURCE_ID=$(az identity show --name $USER_ASSIGNED_MI_NAME --resource-group $RESOURCE_GROUP --query id --output tsv)
    
    #Assign the identity to the Azure IoT Operations instance
    az iot ops identity assign --name $AIO_INSTANCE_NAME \
                               --resource-group $RESOURCE_GROUP \
                               --mi-user-assigned $USER_ASSIGNED_MI_RESOURCE_ID
    

이제 클라우드 연결을 위해 데이터 흐름 엔드포인트에서 이 관리 ID를 사용할 수 있습니다.