Azure Key Vault API 키 및 데이터베이스 연결 문자열과 같은 키, 비밀 및 인증서를 보호하는 데 도움이 됩니다.
이 자습서에서는 Azure 리소스에 대한 관리 ID를 사용하여 Azure Key Vault 정보를 읽도록 Node.js 애플리케이션을 설정합니다. 당신은 다음을 배우게 됩니다:
- 키 자격 증명 모음 만들기
- Key Vault 비밀 저장
- Azure Linux 가상 머신 만들기
- 가상 머신에 관리 ID를 사용하도록 설정
- 콘솔 애플리케이션이 Key Vault 데이터를 읽는 데 필요한 권한을 부여합니다.
- Key Vault 비밀 검색
시작하기 전에 Key Vault 기본 개념 읽어보십시오.
Azure 구독이 없는 경우 free 계정 만듭니다.
Prerequisites
Windows, Mac 및 Linux의 경우:
Azure에 로그인
Azure CLI를 사용하여 Azure에 로그인합니다.
az login
리소스 그룹 및 키 볼트 생성
이 빠른 시작에서는 미리 생성된 Azure 키 볼트를 사용합니다. 다음 빠른 시작 단계에 따라 키 자격 증명 모음을 만들 수 있습니다.
또는 이러한 Azure CLI 명령을 실행할 수 있습니다.
Important
각 Key Vault마다 고유한 이름이 있어야 합니다. 다음 예시에서 <vault-name>을 자신의 주요 자격 증명 모음 이름으로 교체하십시오.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true
비밀로 키 자격 증명 모음 채우기
값이 Success!인 mySecret이라는 비밀을 만들어 보겠습니다. 비밀은 암호, SQL 연결 문자열 또는 애플리케이션에서 안전하게 사용할 수 있도록 유지하는 데 필요한 기타 정보일 수 있습니다.
새로 만든 키 자격 증명 모음에 비밀을 추가하려면 다음 명령을 사용합니다.
az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"
가상 머신 만들기
다음 방법 중 하나를 사용하여 myVM이라는 VM 을 만듭니다.
| Linux | Windows |
|---|---|
| Azure CLI | Azure CLI |
| PowerShell | PowerShell |
| Azure 포털 | Azure 포털 |
Azure CLI 사용하여 Linux VM을 만들려면 az vm create 명령을 사용합니다. 다음 예제에서는 이름이 인 azureuser사용자 계정을 추가합니다. 매개 변수는 --generate-ssh-keys SSH 키를 생성하고 기본 키 위치(~/.ssh)에 저장합니다.
az vm create \
--resource-group <resource-group> \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
출력의 publicIpAddress 값을 기록해 둡니다.
VM에 ID 할당
az vm identity assign 명령을 사용하여 VM에 대한 시스템 할당 관리 ID를 만듭니다.
az vm identity assign --name "myVM" --resource-group "<resource-group>"
출력에서 시스템 할당 ID를 확인합니다.
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
VM ID에 사용 권한을 할당합니다.
VM의 관리되는 ID에 키 자격 증명 모음에 대한 Key Vault 비밀 사용자 역할을 부여합니다.
az role assignment create --role "Key Vault Secrets User" --assignee "<system-assigned-identity>" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>
VM에 로그인
VM에 로그인하려면 Linux를 실행하는 Azure 가상 머신에 연결하고 로그인 또는 Windows를 실행하는 Azure 가상 머신에 연결하고 로그인의 지침을 따르세요.
Linux VM에 로그인하려면 ssh 단계에서 사용합니다 <public-ip-address>.
ssh azureuser@<public-ip-address>
VM에 Node.js 및 npm 라이브러리 설치
VM에서 샘플 스크립트에서 사용하는 두 개의 npm 라이브러리인 @azure/keyvault-secrets 및 @azure/identity를 설치합니다.
SSH 터미널에서 Node.js 및 npm을 설치합니다.
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && \ sudo apt-get install -y nodejs앱 디렉터리를 만들고 Node.js 패키지를 초기화합니다.
mkdir app && cd app && npm init -y다음을 사용하여 Azure 패키지를 설치합니다.
npmnpm install @azure/keyvault-secrets @azure/identity
샘플 JavaScript 파일 만들기 및 편집
app디렉터리의 VM에서index.js라는 JavaScript 파일을 만듭니다:touch index.jsNano 텍스트 편집기로 파일을 엽니다.
nano index.js다음 코드를 편집기에 붙여넣고
<vault-name>를 키 자격 증명 모음 이름으로 바꾸세요.// index.js const { SecretClient } = require("@azure/keyvault-secrets"); const { DefaultAzureCredential } = require("@azure/identity"); // Your Azure Key Vault name and secret name const keyVaultName = "<vault-name>"; const keyVaultUri = `https://${keyVaultName}.vault.azure.net`; const secretName = "mySecret"; // Authenticate to Azure const credential = new DefaultAzureCredential(); const client = new SecretClient(keyVaultUri, credential); // Get Secret with Azure SDK for JS const getSecret = async (secretName) => { return (await client.getSecret(secretName)).value; } getSecret(secretName).then(secretValue => { console.log(`The value of secret '${secretName}' in '${keyVaultName}' is: '${secretValue}'`); }).catch(err => { console.log(err); })Ctrl+X를 사용하여 파일을 저장합니다.
프롬프트에서
Save modified buffer?y를 입력 합니다.File Name to Write: index.js프롬프트에서 Enter 키를 누릅니다.
샘플 Node.js 앱 실행
index.js을 실행합니다. 모든 항목이 올바르게 구성된 경우 앱은 비밀 값을 출력합니다.
node index.js
The value of secret 'mySecret' in '<vault-name>' is: 'Success!'
리소스 정리
더 이상 필요하지 않으면 VM과 키 자격 증명 모음을 삭제하세요. 가장 빠른 방법은 속한 리소스 그룹을 삭제하는 것입니다.
az group delete -g "myResourceGroup"