비밀 변수 설정

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

비밀 변수는 해당 값을 노출하지 않고 파이프라인에서 사용할 수 있는 암호화된 변수입니다. 비밀 변수는 암호, ID 및 파이프라인에 노출하지 않으려는 기타 식별 데이터와 같은 개인 정보에 사용할 수 있습니다. 비밀 변수는 2048비트 RSA 키로 미사용 시 암호화되며 에이전트에서 작업 및 스크립트를 사용할 수 있습니다.

비밀 변수를 설정하는 권장 방법은 UI, 변수 그룹Azure Key Vault의 변수 그룹에 있습니다. 로깅 명령을 사용하여 스크립트에서 비밀 변수를 설정할 수도 있지만 파이프라인에 액세스할 수 있는 사람은 누구나 비밀을 볼 수 있으므로 권장되지 않습니다.

파이프라인의 파이프라인 설정 UI에 설정된 비밀 변수는 설정된 파이프라인으로 범위가 지정됩니다. 변수 그룹을 사용하여 파이프라인 간에 비밀 변수를 공유할 수 있습니다.

UI의 비밀 변수

개별 파이프라인을 편집할 때 파이프라인 편집기에서 비밀 변수를 설정할 수 있습니다. 잠금 아이콘을 선택하여 파이프라인 변수 비밀을 암호화하고 만듭니다.

YAML 및 클래식에 대해 동일한 방식으로 비밀 변수를 설정합니다.

웹 인터페이스에서 비밀을 설정하려면 다음 단계를 수행합니다.

  1. 파이프라인 페이지로 이동하여 적절한 파이프라인을 선택하고 편집을 선택합니다.
  2. 이 파이프라인에 대한 변수를 찾습니다.
  3. 변수를 추가하거나 업데이트합니다.
  4. 암호화된 방식으로 변수를 저장하려면 이 값을 비밀 로 유지하는 옵션을 선택합니다.
  5. 파이프라인 저장

비밀 변수는 2048비트 RSA 키를 사용하여 미사용 시 암호화됩니다. 비밀은 에이전트에서 사용할 작업 및 스크립트에 사용할 수 있습니다. 파이프라인을 변경할 수 있는 액세스 권한이 있는 사용자에 주의하세요.

Important

Azure Pipelines 출력에 표시되지 않도록 비밀을 마스킹하기 위해 노력하지만 여전히 예방 조치를 취해야 합니다. 비밀을 출력으로 에코하지 마세요. 일부 운영 체제는 명령줄 인수를 기록합니다. 명령줄에 비밀을 전달하지 마세요. 대신 비밀을 환경 변수에 매핑하는 것이 좋습니다.

우리는 비밀의 부분 문자열을 마스크하지 않습니다. 예를 들어 "abc123"이 비밀로 설정된 경우 "abc"는 로그에서 마스킹되지 않습니다. 이는 너무 세분화된 수준에서 비밀을 마스킹하여 로그를 읽을 수 없게 만드는 것을 방지하기 위한 것입니다. 이러한 이유로 비밀에는 구조화된 데이터가 포함되어서는 안 됩니다. 예를 들어 "{ "foo": "bar" }"이(가) 비밀로 설정된 경우 "bar"는 로그에서 마스킹되지 않습니다.

일반 변수와 달리 스크립트에 대한 환경 변수로 자동으로 암호가 해독되지는 않습니다. 비밀 변수를 명시적으로 매핑해야 합니다.

UI에서 비밀 변수 사용

YAML 파이프라인에서 참조하려면 비밀 변수를 환경 변수로 매핑해야 합니다. 이 예제에는 UI SecretOne 에 정의된 두 개의 비밀 변수와 SecretTwo. 값 SecretOne 은 is foo 이고 값은 SecretTwo .입니다 bar.

steps:
- powershell: |
      Write-Host "My first secret variable is $env:FOO_ONE"
      $env:FOO_ONE -eq "foo"
  env:
    FOO_ONE: $(SecretOne)
- bash: |
    echo "My second secret variable: $FOO_TWO"
    if [ "$FOO_TWO" = "bar" ]; then
        echo "Strings are equal."
    else
        echo "Strings are not equal."
    fi
  env:
    FOO_TWO: $(SecretTwo) 

파이프라인 출력:

My first secret variable is ***
True
My second secret variable: ***
Strings are equal.

참고 항목

Azure Pipelines는 파이프라인 로그에 데이터를 내보낸 경우 비밀을 마스킹하기 위해 노력하므로 비밀로 설정되지 않은 출력 및 로그에 마스킹된 추가 변수 및 데이터를 볼 수 있습니다.

자세한 예제는 변수 정의를 참조 하세요.

변수 그룹에서 비밀 변수 설정

변수 그룹에 비밀을 추가하거나 기존 Azure Key Vault의 비밀을 연결할 수 있습니다.

새 변수 그룹 만들기

  1. 파이프라인>라이브러리>+ 변수 그룹을 선택합니다.

    Screenshot of Add variable group button highlighted with red box.

  2. 그룹의 이름과 설명을 입력합니다.

  3. 선택 사항: 토글을 이동하여 Azure Key Vault의 비밀을 변수로 연결합니다. 자세한 내용은 Azure Key Vault 비밀 사용을 참조 하세요.

  4. 그룹에 포함할 각 변수의 이름과 값을 입력하고 각 변수에 대해 + 추가선택합니다.

  5. 변수를 안전하게 만들려면 행 끝에 있는 "잠금" 아이콘을 선택합니다.

  6. 변수 추가를 마쳤으면 [저장]을 선택합니다.

    Screenshot of saving a variable group.

변수 그룹은 라이브러리 보안 모델을 따릅니다.

기존 Azure Key Vault를 변수 그룹에 연결하고 선택적 자격 증명 모음 비밀을 변수 그룹에 매핑합니다.

  1. 변수 그룹 페이지에서 Azure Key Vault의 비밀을 변수로 연결하도록 설정합니다. 비밀을 포함하는 기존 키 자격 증명 모음이 필요합니다. Azure Portal을 사용하여 키 자격 증명 모음을 만듭니다.

    Screenshot of variable group with Azure key vault integration.

  2. Azure 구독 엔드포인트와 비밀을 포함하는 자격 증명 모음의 이름을 지정합니다.

    Azure 서비스 연결에 비밀에 대한 자격 증명 모음에 대한 관리 권한 가져오기나열 이상이 있는지 확인합니다. 자격 증명 모음 이름 옆에 있는 권한을 선택하여 Azure Pipelines에서 이러한 권한을 설정할 수 있도록 설정합니다. 또는 Azure Portal에서 수동으로 권한을 설정합니다.

    1. 자격 증명 모음에 대한 설정 연 다음 Access 정책>새로 추가를 선택합니다.
    2. 보안 주체 선택을 선택한 다음 클라이언트 계정의 서비스 주체를 선택합니다.
    3. 비밀 권한을 선택하고 가져오기 및 목록에 검사 표시가 있는지 확인합니다.
    4. 확인을 선택하여 변경 내용을 저장합니다.
  3. 변수 그룹 페이지에서 + 추가를 선택하여 이 변수 그룹에 매핑하기 위해 자격 증명 모음에서 특정 비밀을 선택합니다.

키 자격 증명 모음 비밀 관리

비밀을 관리하기 위한 유용한 팁의 다음 목록을 참조하세요.

  • 비밀 이름만 비밀 값이 아니라 변수 그룹에 매핑됩니다. 자격 증명 모음에서 가져온 최신 비밀 값은 변수 그룹에 연결된 파이프라인 실행에 사용됩니다.

  • 키 자격 증명 모음의 기존 비밀에 대한 변경 내용은 변수 그룹이 사용하는 모든 파이프라인에서 자동으로 사용할 수 있습니다.

  • 자격 증명 모음에 새 비밀이 추가되거나 삭제되면 연결된 변수 그룹이 자동으로 업데이트되지 않습니다. 변수 그룹에 포함된 비밀은 변수 그룹을 사용하는 파이프라인이 올바르게 실행되도록 명시적으로 업데이트해야 합니다.

  • Azure Key Vault는 Azure에서 암호화 키 및 비밀 저장 및 관리를 지원합니다. 현재 Azure Pipelines 변수 그룹 통합은 Azure Key Vault의 비밀만 매핑하는 것을 지원합니다. 암호화 키 및 인증서는 지원되지 않습니다.

Azure Key Vault 작업 사용

Azure Key Vault 작업을 사용하여 파이프라인에 비밀을 포함할 수 있습니다. 이 작업을 통해 파이프라인은 Azure Key Vault에 연결하고 파이프라인 변수로 사용할 비밀을 검색할 수 있습니다.

  1. 파이프라인 편집기에서 도우미 표시를 선택하여 도우미 패널을 확장합니다.

  2. vault Azure Key Vault 작업을 검색하여 선택합니다.

    Add the Azure Key Vault task.

전체 작업에서 비밀을 사용할 수 있도록 설정 옵션은 현재 Azure DevOps Server 2019 및 2020에서 지원되지 않습니다.

Azure Key Vault 작업에 대한 자세한 내용은 Azure Pipelines에서 Azure Key Vault 비밀 사용을 참조 하세요.

로깅 명령을 사용하여 스크립트에서 비밀 변수 설정

로깅 명령을 사용하여 task.setvariable PowerShell 및 Bash 스크립트에서 변수를 설정할 수 있습니다. 이는 비밀 변수를 사용하는 가장 안전한 방법이지만 디버깅에 유용할 수 있습니다. 비밀 변수를 설정하는 권장 방법은 UI, 변수 그룹 및 Azure Key Vault의 변수 그룹에 있습니다.

로깅 명령을 사용하여 변수를 스크립트로 설정하려면 플래그를 issecret 전달해야 합니다.

true로 설정하면 issecret 변수 값이 비밀로 저장되고 로그에서 마스킹됩니다.

참고 항목

Azure Pipelines는 파이프라인 로그에 데이터를 내보낸 경우 비밀을 마스킹하기 위해 노력하므로 비밀로 설정되지 않은 출력 및 로그에 마스킹된 추가 변수 및 데이터를 볼 수 있습니다.

비밀 변수 mySecretVal을(를) 설정합니다.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"

비밀 변수 mySecretVal를 가져옵니다.

- bash: |
    echo "##vso[task.setvariable variable=mySecretVal;issecret=true]secretvalue"
- bash: |
    echo $(mySecretVal)

bash의 비밀 변수 출력입니다.

Screenshot of bash variable output.

스크립트에서 변수를 설정하고 사용하는 방법에 대해 자세히 알아봅니다.