DEVOPSパイプラインを使用してキーVaultへのアクセスがない秘密をフェッチ
5022 ワード
挨拶私の仲間の技術擁護者と専門家.
USECASE導入
AzureキーVaultは“アクセスポリシー”と“ファイアウォールと仮想ネットワーク”で保護されています.Azureのクラウドエンジニアは、条件のいずれかまたは両方のために秘密を取得することはできません(Scenerioに応じて).
問題文:クラウドエンジニアのユーザーアカウントは、キーVaultアクセスポリシーの一部ではありません.したがって、秘密はAzureポータルから見ることができません. Key Vaultは、組織の公共のNAT IPSによって保護されます.クラウドエンジニアが内部組織ネットワークから働いていない限り、秘密はAzureポータルから見ることができません. Key Vaultは、Azure仮想ネットワークによって保護されます.Azure仮想ネットワークの中でなければ、秘密はAzureポータルから見ることができません.
質問時間:
どのように、クラウドエンジニアは秘密を得ますか?
要件 AzureキーVault AzureキーVault の3つのサンプル秘密 Azureリソースマネージャサービス接続 Azure devopsパイプライン( YAML ) 注意:
サービス・プリンシパル(サービス接続を作成するために必要とされる)は、AzureキーVaultの最小の取得とリストアクセス方針許可を持たなければなりません.
キーVaultのサンプルの秘密を表示します
パイプラインはどうしますか?
#
パイプラインタスク
1 .
Azureキーボールトタスク
2 .
すべての秘密を取得し、テキストファイルに保存
3 .
秘密のテキストファイルをコピーするアーティファクトステージングディレクトリ
4 .
工芸品を発行する
コードリポジトリ
以下はYAMLファイルの内容です.
パイプラインの結果
アーティファクトで公開されている秘密のテキストファイル
秘密のテキストファイルをダウンロードして表示します
秘密のテキストファイルの出力形式は[秘密の名前]です
USECASE導入
AzureキーVaultは“アクセスポリシー”と“ファイアウォールと仮想ネットワーク”で保護されています.Azureのクラウドエンジニアは、条件のいずれかまたは両方のために秘密を取得することはできません(Scenerioに応じて).
問題文:
どのように、クラウドエンジニアは秘密を得ますか?
要件
サービス・プリンシパル(サービス接続を作成するために必要とされる)は、AzureキーVaultの最小の取得とリストアクセス方針許可を持たなければなりません.
キーVaultのサンプルの秘密を表示します
パイプラインはどうしますか?
#
パイプラインタスク
1 .
Azureキーボールトタスク
2 .
すべての秘密を取得し、テキストファイルに保存
3 .
秘密のテキストファイルをコピーするアーティファクトステージングディレクトリ
4 .
工芸品を発行する
コードリポジトリ
アーリンダム0310018 / デビアス
以下はYAMLファイルの内容です.
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'
変更したい変数の値:-######################
#DECLARE VARIABLES:-
######################
variables:
ServiceConnection: amcloud-cicd-service-connection
KVName: ampockv
Artifact: AM
マイクロソフト主催のビルドエージェントからエージェントをビルドし、それ以外のビルドエージェントに変更します.パイプラインの結果
アーティファクトで公開されている秘密のテキストファイル
秘密のテキストファイルをダウンロードして表示します
秘密のテキストファイルの出力形式は[秘密の名前]です
Reference
この問題について(DEVOPSパイプラインを使用してキーVaultへのアクセスがない秘密をフェッチ), 我々は、より多くの情報をここで見つけました 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