문서에서 Azure Key Vault는 안전하게 비밀을 저장하고 액세스하는 클라우드 서비스입니다. 비밀은 API 키, 비밀번호, 인증서 또는 암호화 키와 같이 액세스를 엄격히 제어하고 싶은 모든 것을 의미합니다. Key Vault 서비스는 두 가지 유형의 컨테이너를 지원합니다: 보관함(vaults)과 관리형 하드웨어 보안 모듈(HSM) 풀. 보관함은 소프트웨어 및 HSM 지원 키, 비밀 및 인증서를 저장하는 데 사용됩니다. 관리형 HSM 풀은 HSM 지원 키만 지원합니다. 자세한 내용은 Azure Key Vault REST API 개요를 참조하세요.
URL 형식은 https://{vault-name}.vault.azure.net/{object-type}/{object-name}/{object-version}입니다. 여기서:
vault-name은 키 보관함의 전역적으로 고유한 이름입니다.
object-type은 "keys", "secrets" 또는 "certificates"가 될 수 있습니다.
object-name은 키 보관함 내의 고유한 객체 이름입니다.
object-version은 시스템에서 생성되며 객체의 고유한 버전을 지정하는 데 선택적으로 사용됩니다.
이는 키 보관함 및 액세스 정책을 관리하는 데 사용됩니다. Azure 역할 기반 액세스 제어(RBAC)만 지원됩니다.
데이터 평면은 **<vault-name>.vault.azure.com**을 대상으로 합니다.
이는 키 보관함 내의 데이터(키, 비밀 및 인증서)를 관리하고 액세스하는 데 사용됩니다. 이는 키 보관함 액세스 정책 또는 Azure RBAC을 지원합니다.
관리 평면에서 액세스 정책을 관리하는 데 권한이 있는 Contributor와 같은 역할은 액세스 정책을 수정하여 비밀에 액세스할 수 있습니다.
Key Vault RBAC 내장 역할
네트워크 액세스
Azure Key Vault에서는 방화벽 규칙을 설정하여 지정된 가상 네트워크 또는 IPv4 주소 범위에서만 데이터 평면 작업을 허용할 수 있습니다. 이 제한은 Azure 관리 포털을 통한 액세스에도 영향을 미칩니다. 사용자는 로그인 IP 주소가 허가된 범위 내에 없는 경우 키 보관함의 키, 비밀 또는 인증서를 나열할 수 없습니다.
이러한 설정을 분석하고 관리하기 위해 Azure CLI를 사용할 수 있습니다:
azkeyvaultshow--namename-vault--querynetworkAcls
이전 명령은 name-vault의 방화벽 설정을 표시합니다. 이 설정에는 허용된 IP 범위 및 거부된 트래픽에 대한 정책이 포함됩니다.
열거
# Get keyvault tokencurl "$IDENTITY_ENDPOINT?resource=https://vault.azure.net&api-version=2017-09-01"-H secret:$IDENTITY_HEADER# Connect with PS AzureAD## $token from management APIConnect-AzAccount -AccessToken $token -AccountId 1937ea5938eb-10eb-a365-10abede52387 -KeyVaultAccessToken $keyvaulttoken
# List vaultsGet-AzKeyVault# Get secrets names from the vaultGet-AzKeyVaultSecret-VaultName <vault_name># Get secret valuesGet-AzKeyVaultSecret-VaultName <vault_name>-Name <secret_name> –AsPlainText
#!/bin/bash# Dump all keyvaults from the subscription# Define Azure subscription IDAZ_SUBSCRIPTION_ID="your-subscription-id"# Specify the filename for outputCSV_OUTPUT="vault-names-list.csv"# Login to Azure accountazlogin# Select the desired subscriptionazaccountset--subscription $AZ_SUBSCRIPTION_ID# Retrieve all resource groups within the subscriptionAZ_RESOURCE_GROUPS=$(azgrouplist--query "[].name" -otsv)# Initialize the CSV file with headersecho"Vault Name,Associated Resource Group"> $CSV_OUTPUT# Iterate over each resource groupfor GROUP in $AZ_RESOURCE_GROUPSdo# Fetch key vaults within the current resource groupVAULT_LIST=$(azkeyvaultlist--resource-group $GROUP --query "[].name" -otsv)# Process each key vaultfor VAULT in $VAULT_LISTdo# Extract the key vault's nameVAULT_NAME=$(azkeyvaultshow--name $VAULT --resource-group $GROUP --query "name" -otsv)# Append the key vault name and its resource group to the fileecho"$VAULT_NAME,$GROUP">> $CSV_OUTPUTdonedone
htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅까지 AWS 해킹을 배우세요!
HackTricks를 지원하는 다른 방법:
회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하고 싶다면 구독 요금제를 확인하세요!