Linter 규칙 - use protectedSettings for commandToExecute secrets

이 규칙은 사용자 지정 스크립트 리소스의 설정 속성에서 비밀의 노출 가능성을 확인합니다.

Linter 규칙 코드

Bicep 구성 파일의 다음 값을 사용하여 규칙 설정을 사용자 지정합니다.

protect-commandtoexecute-secrets

솔루션

사용자 지정 스크립트 리소스의 경우 암호와 같은 비밀 데이터가 포함된 경우 settings 속성 개체 대신 protectedSettings 속성 개체 아래에 commandToExecute 값을 배치해야 합니다. 예를 들어 비밀 데이터는 보안 매개 변수, listKeys와 같은 list* 함수 또는 사용자 지정 스크립트 인수에서 찾을 수 있습니다.

일반 텍스트를 사용하므로 settings 개체에서 비밀 데이터를 사용하지 마세요. 자세한 내용은 Microsoft.Compute virtualMachines/extensions, Windows용 사용자 지정 스크립트 확장Linux 가상 머신에서 Azure 사용자 지정 스크립트 확장 버전 2 사용을 참조하세요.

다음 예제는 commandToExecutesettings에 지정되어 있고, 보안 매개 변수를 사용하므로 실패합니다.

param vmName string
param location string
param fileUris string
param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' existing = {
  name: storageAccountName
}

resource customScriptExtension 'Microsoft.HybridCompute/machines/extensions@2023-03-15-preview' = {
  name: '${vmName}/CustomScriptExtension'
  location: location
  properties: {
    publisher: 'Microsoft.Compute'
    type: 'CustomScriptExtension'
    autoUpgradeMinorVersion: true
    settings: {
      fileUris: split(fileUris, ' ')
      commandToExecute: 'mycommand ${storageAccount.listKeys().keys[0].value}'
    }
  }
}

commandToExecute 속성을 protectedSettings 개체로 이동하여 수정할 수 있습니다.

param vmName string
param location string
param fileUris string
param storageAccountName string

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' existing = {
  name: storageAccountName
}

resource customScriptExtension 'Microsoft.HybridCompute/machines/extensions@2023-03-15-preview' = {
  name: '${vmName}/CustomScriptExtension'
  location: location
  properties: {
    publisher: 'Microsoft.Compute'
    type: 'CustomScriptExtension'
    autoUpgradeMinorVersion: true
    settings: {
      fileUris: split(fileUris, ' ')
    }
    protectedSettings: {
      commandToExecute: 'mycommand ${storageAccount.listKeys().keys[0].value}'
    }
  }
}

다음 단계

Linter에 관한 자세한 내용은 Bicep Linter 사용을 참조하세요.