다음을 통해 공유


Azure Pipelines에서 비밀 보호

이 문서에서는 Azure Pipelines에서 비밀을 보호하는 모범 사례를 제공합니다. 비밀은 API 키, 암호, 인증서 또는 암호화 키 등에 대한 액세스를 엄격하게 제어하려는 항목입니다.

Azure Pipelines에서는 비밀 값을 생성하지 않습니다. 그러나 API 키와 같은 중요한 데이터를 저장하기 위해 파이프라인에 비밀을 추가해야 할 수 있습니다. 비밀 변수 설정에 대한 자세한 내용은 비밀 변수 설정을 참조하세요.

다른 방법을 사용할 수 있는 경우 비밀을 사용하지 마세요.

비밀을 보호하는 가장 좋은 방법은 애초에 비밀을 포함하지 않는 것입니다. 파이프라인이 비밀을 사용하여 작업을 수행하는 것과 다른 방법을 사용할 수 있는지 확인합니다.

비밀 변수 사용

중요한 값은 Azure Pipelines .yml 파일에 일반 텍스트로 저장해서는 안 됩니다.

비밀 변수는 암호, ID 및 파이프라인에 노출하지 않으려는 기타 식별 데이터와 같은 개인 정보에 사용할 수 있습니다. 비밀 변수설정하는 권장 방법은 Azure Key Vault를 사용하는 것입니다. UI 또는 변수 그룹에서 비밀 변수를 설정할 수도 있습니다. 로깅 명령을 사용하여 비밀 변수를 설정하는 것은 권장되지 않습니다. 로깅 명령을 사용하여 비밀을 설정하면 파이프라인에 액세스할 수 있는 모든 사용자가 비밀을 볼 수 있습니다.

비밀 변수는 암호화되며 값을 노출하지 않고 파이프라인에서 사용할 수 있습니다. 해당 값은 노출되지 않지만 비밀을 출력으로 에코하지 않으며 명령줄에 비밀을 전달하지 않습니다. 대신 비밀을 환경 변수에 매핑하는 것이 좋습니다.

비밀을 만들 때 변수 명명 지침을 따르고 비밀 이름이 중요한 정보를 공개하지 않는지 확인합니다.

비밀 변수에 대한 액세스 제한

Azure DevOps에서 비밀에 대한 액세스를 제한하려면 다음을 수행할 수 있습니다.

  • Azure Key Vault비밀을 저장합니다. Azure Key Vault를 사용하면 Azure의 역할 기반 액세스 제어 모델을 사용하여 비밀 또는 비밀 그룹에 대한 액세스를 제한할 수 있습니다.
  • 파이프라인에 대한 UI에서 비밀 변수를 설정합니다. 파이프라인의 파이프라인 설정 UI에 설정된 비밀 변수는 설정된 파이프라인으로 범위가 지정됩니다. 따라서 해당 파이프라인에 대한 액세스 권한이 있는 사용자에게만 표시되는 비밀을 가질 수 있습니다.
  • 변수 그룹에서 비밀을 설정합니다. 변수 그룹은 라이브러리 보안 모델을 따릅니다. 라이브러리에서 새 항목을 정의할 수 있는 사용자와 기존 항목을 사용할 수 있는 사용자를 제어할 수 있습니다.

로그에 비밀 쓰기 안 함

Azure Pipelines는 가능한 한 로그에서 비밀을 스크럽하려고 시도합니다. 이 필터링은 최선의 방법으로 수행되며 기밀이 유출될 수 있는 모든 방법을 포착할 수는 없습니다. 콘솔에 비밀을 에코하거나, 명령줄 매개 변수에 사용하거나, 파일에 로깅하지 마세요. 예를 들어 일부 Azure CLI 명령은 보호해야 하는 정보를 출력합니다. 파이프라인에서 Azure CLI를 호출하는 경우 None 출력 형식을 사용하고 Azure CLI 호출에서 비밀을 검색해야 하는 경우 없음 출력 형식을 사용하고 보안 정보를 비밀 변수로 검색합니다.

구조적 데이터를 비밀로 사용하지 마세요.

정형 데이터로 인해 로그 내에서 비밀 편집이 실패할 수 있습니다. 편집은 주로 특정 비밀 값에 대한 정확한 일치 항목을 찾는 데 의존하기 때문입니다. 예를 들어 JSON, XML 또는 YAML(또는 이와 유사한)의 Blob을 사용하여 캐리지 리턴() 및 줄 바\n꿈(\r)과 같은 제어 문자를 포함하여 비밀 값을 캡슐화하지 마세요. 이렇게 하면 비밀이 제대로 수정될 확률이 크게 줄어듭니다. 대신 각 중요한 값에 대한 개별 비밀을 만듭니다.

비밀 처리 방법 감사

비밀이 예상대로 처리되고 있는지 확인하기 위해 비밀이 사용되는 방법을 감사합니다. 파이프라인을 호스팅하는 리포지토리의 소스 코드를 검토하고 파이프라인에 사용되는 모든 작업을 검사 이 작업을 수행할 수 있습니다. 예를 들어 의도하지 않은 호스트로 보내지거나 로그 출력에 명시적으로 인쇄되지 않는지 확인합니다.

유효/잘못된 입력을 테스트한 후 파이프라인에 대한 실행 로그를 보고 비밀이 제대로 수정되었거나 표시되지 않는지 검사. 호출하는 명령이나 도구가 오류를 내보내고 나중에 비밀이 오류 로그로 끝날 수 있는 방법이 항상 명확하지는 않습니다. Azure Pipelines는 가능한 한 로그에서 비밀을 스크럽하려고 시도합니다. 이 필터링은 최선의 방법으로 수행되며 기밀이 유출될 수 있는 모든 방법을 포착할 수는 없습니다. 따라서 유효하고 잘못된 입력을 테스트한 후 파이프라인 로그를 수동으로 검토하는 것이 좋습니다.

비밀 감사 및 회전

파이프라인에서 사용하는 등록된 비밀을 주기적으로 검토하여 여전히 필요한지 확인하고 더 이상 필요하지 않은 비밀을 제거합니다.

비밀을 주기적으로 회전하여 손상된 비밀이 유효한 기간을 줄입니다.

파이프라인에서 사용하는 비밀 유형에는 다음이 포함될 수 있습니다.

다음 단계