다음을 통해 공유


비밀 변수 설정

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. 파이프라인>라이브러리>+ 변수 그룹을 선택합니다.

    빨간색 상자가 강조 표시된 변수 그룹 추가 단추의 스크린샷

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

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

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

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

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

    변수 그룹을 저장하는 스크린샷

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

기존 Azure Key Vault에 연결되는 변수 그룹을 만들고 선택한 Key Vault 비밀을 변수 그룹에 매핑할 수 있습니다. 비밀 이름만 비밀 값이 아니라 변수 그룹에 매핑됩니다. 파이프라인은 변수 그룹에 대한 링크를 실행하여 자격 증명 모음에서 최신 비밀 값을 가져옵니다.

키 자격 증명 모음의 기존 비밀에 대한 변경 내용은 변수 그룹을 사용하는 모든 파이프라인에서 자동으로 사용할 수 있습니다. 그러나 비밀이 자격 증명 모음에 추가되거나 자격 증명 모음에서 삭제되는 경우 연결된 변수 그룹은 자동으로 업데이트되지 않습니다. 변수 그룹에 포함할 비밀을 명시적으로 업데이트해야 합니다.

Key Vault는 Azure에서 암호화 키 및 인증서 저장 및 관리를 지원하지만 Azure Pipelines 변수 그룹 통합은 키 자격 증명 모음 비밀 매핑만 지원합니다. 암호화 키 및 인증서는 지원되지 않습니다.

참고 항목

Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하는 키 자격 증명 모음은 지원되지 않습니다.

필수 조건

변수 그룹 만들기

  1. Azure DevOps 프로젝트에서 파이프라인>라이브러리>+ 변수 그룹을 선택합니다.
  2. 변수 그룹 페이지에서 변수 그룹에 대한 이름 및 선택적 설명을 입력합니다.
  3. Azure Key Vault의 링크 비밀을 변수 토글로 사용하도록 설정합니다.
  4. Azure 구독 엔드포인트 및 키 자격 증명 모음 이름을 선택합니다.
  5. 자격 증명 모음 이름 옆에 있는 권한을 선택하여 Azure DevOps가 키 자격 증명 모음에 액세스할 수 있도록 설정합니다.
  6. 비밀 선택 화면에서 자격 증명 모음에서 이 변수 그룹에 매핑할 특정 비밀을 선택한 다음 확인을 선택합니다.
  7. 저장을 선택하여 비밀 변수 그룹을 저장합니다.

Azure Key Vault 통합을 사용한 변수 그룹의 스크린샷.

참고 항목

Azure 서비스 연결에는 이전 단계에서 권한을 부여할 수 있는 키 자격 증명 모음에 대한 가져오기나열 권한이 있어야 합니다. 다음 단계를 수행하여 Azure Portal에서 이러한 권한을 제공할 수도 있습니다.

  1. 키 자격 증명 모음에 대한 설정을 연 다음 액세스 구성>을 선택하여 액세스 정책으로 이동합니다.
  2. 액세스 정책 페이지에서 Azure Pipelines 프로젝트가 최소한 가져오기나열 권한이 있는 애플리케이션 아래에 나열되지 않은 경우 만들기를 선택합니다.
  3. 비밀 권한에서 가져오기목록을 선택한 다음, 다음을 선택합니다.
  4. 서비스 주체를 선택한 다음, 다음을 선택합니다.
  5. 다음을 다시 선택하고 설정을 검토한 다음 만들기를 선택합니다.

Azure Key Vault 작업 사용

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

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

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

    Azure Key Vault 작업을 추가합니다.

전체 작업에서 비밀을 사용할 수 있도록 설정 옵션은 현재 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의 비밀 변수 출력입니다.

bash 변수 출력의 스크린샷.

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