DEVOPS 파이프라인을 사용하여 키 볼트에 대한 액세스 권한 없이 비밀 가져오기
사용 사례 소개:-
Azure Key Vault는 "액세스 정책"및 "방화벽 및 가상 네트워크"로 보호됩니다. Azure 클라우드 엔지니어는 조건 중 하나 또는 둘 다로 인해 비밀을 가져올 수 없습니다(Scenerio에 따라 다름).
문제 진술:-
질문 시간:-
클라우드 엔지니어는 비밀을 어떻게 가져오나요?
요구 사항:-
노트:-
서비스 주체(서비스 연결을 만드는 데 필요함)는 최소한 Azure Key Vault에서 GET 및 LIST 액세스 정책 권한이 있어야 합니다.
아래는 KEY VAULT의 샘플 비밀을 표시합니다.
파이프라인은 무엇을 하는가:-
#
파이프라인 작업
1.
AZURE 키 볼트 작업
2.
모든 비밀을 가져와 텍스트 파일에 저장
삼.
ARTIFACTS 스테이징 디렉터리에 비밀 텍스트 파일 복사
4.
아티팩트 게시
코드 저장소:-
arindam0310018 / Fetch-Secrets_DevOps
다음은 YAML 파일(Azure DevOps)의 내용입니다.
trigger:
none
######################
#DECLARE VARIABLES:-
######################
variables:
ServiceConnection: amcloud-cicd-service-connection
KVName: ampockv
Artifact: AM
#########################
# Declare Build Agents:-
#########################
pool:
vmImage: windows-latest
###################
# Declare Stages:-
###################
stages:
- stage: USECASE_DISPLAY_ALL_SECRETS_AND_VALUES
jobs:
- job: DISPLAY_SECRETS_AND_VALUES
displayName: DISPLAY SECRETS AND VALUES
steps:
########################################################################
# Azure Key Vault Task.
# Display the name of Key Vault.
# Display the No. of Secrets found in Key Vault.
# Display the No. of enabled and unexpired Secrets found in Key Vault.
# Downloads values of Each Secret in Key Vault.
########################################################################
- task: AzureKeyVault@2
displayName: AZ KEYVAULT TASK
inputs:
azureSubscription: '$(ServiceConnection)'
KeyVaultName: '$(KVName)'
SecretsFilter: '*'
RunAsPreJob: false
#######################################################
# Integers can be compared with these operators:
# -eq # Equal
# -ne # Not equal
# -lt # Less than
# -le # Less than or equal
# -gt # Greater than
# -ge # Greater than or equal
#######################################################
###############################################################
# Copy the Secrets text file to Artifacts Staging Directory:-
###############################################################
- task: AzureCLI@2
displayName: FETCH ALL SECRETS
inputs:
azureSubscription: '$(ServiceConnection)'
scriptType: ps
scriptLocation: inlineScript
inlineScript: |
az --version
az account show
$count = az keyvault secret list --vault-name $(KVName) --query "[] | length(@)"
For ($i=0; $i -lt $count; $i++) {
$secretname = az keyvault secret list --vault-name $(KVName) --query [$i].name -o tsv
$secretvalue = az keyvault secret show --vault-name $(KVName) --name $secretname --query value -o tsv
echo ($secretname + ':' + $secretvalue) >> Secrets.txt
}
###############################################################
# Copy the Secrets text file to Artifacts Staging Directory:-
###############################################################
- task: CopyFiles@2
displayName: COPY TO ARTIFACTS STAGING DIRECTORY
inputs:
Contents: Secrets.txt
targetFolder: '$(Build.ArtifactStagingDirectory)'
###########################
# Publish the Artifacts:-
###########################
- task: PublishBuildArtifacts@1
displayName: PUBLISH ARTIFACTS
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: '$(Artifact)'
publishLocation: 'Container'
변경하려는 경우 VARIABLES의 값:-
######################
#DECLARE VARIABLES:-
######################
variables:
ServiceConnection: amcloud-cicd-service-connection
KVName: ampockv
Artifact: AM
에이전트 풀을 MICROSOFT HOSTED BUILD AGENT에서 SELF HOSTED BUILD AGENT로 변경하십시오. 그렇지 않으면 아래 오류가 발생합니다.
파이프라인 결과:-
아티팩트에 게시된 비밀 텍스트 파일:-
비밀 텍스트 파일 다운로드 및 보기:-
비밀 텍스트 파일의 출력 형식은 [비밀 이름]:[비밀 값]입니다.
Reference
이 문제에 관하여(DEVOPS 파이프라인을 사용하여 키 볼트에 대한 액세스 권한 없이 비밀 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/arindam0310018/fetch-secrets-with-no-access-to-key-vault-using-devops-pipelines-54h3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)