Azure Key Vault를 GitHub Actions 워크플로에 통합하여 중요한 자격 증명을 한 곳에서 안전하게 관리합니다. 이 방법을 사용하면 중요한 데이터에 실수로 노출되거나 무단으로 액세스할 위험이 줄어듭니다.
이 GitHub Actions 샘플 워크플로에서는 OIDC(OpenID Connect) 인증을 사용하여 Azure Key Vault에서 비밀을 안전하게 검색하는 방법을 보여 줍니다.
필수 조건
- Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 페더레이션 ID 자격 증명을 구성합니다.
OpenID Connect를 통해 GitHub Actions에서 Azure에 인증하는 방법을 알아봅니다. 페더레이션 자격 증명을 설정할 때 GitHub에 다음 비밀을 저장합니다.
-
AZURE_CLIENT_ID: Azure 서비스 주체의 클라이언트 ID입니다. -
AZURE_TENANT_ID: Azure AD 테넌트 ID입니다. -
AZURE_SUBSCRIPTION_ID: Azure 구독 ID입니다. -
KEYVAULT_NAME: Key Vault 이름입니다.
-
- 권한 부여: 서비스 주체가 Key Vault에 대한 적절한 액세스 권한을 가지고 있는지 확인합니다(예: "Key Vault 비밀 사용자" 역할).
-
<SECRET_NAME>을(를) Key Vault 비밀 이름으로 바꾸십시오.
GitHub Actions 워크플로 샘플
워크플로에서 수행하는 작업:
- 메인 브랜치에 푸시될 때 트리거
- OIDC 인증을 사용하여 Azure에 연결(GitHub에 저장된 암호 없음)
- Azure Key Vault에서 비밀을 검색합니다.
- 비밀 값
::add-mask::이 로그에 표시되지 않도록 마스킹 - 후속 단계에 대한 환경 변수로 비밀을 사용할 수 있도록 설정
name: Access Azure Key Vault and pass secret to workflow
on:
push:
branches:
- main
permissions:
id-token: write
contents: read
jobs:
get-secret:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Azure Login
uses: azure/login@v1
with:
client-id: ${{ secrets.AZURE_CLIENT_ID }}
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
- name: Retrieve secret from Key Vault
id: keyvault
uses: azure/CLI@v1
with:
inlineScript: |
SECRET_VALUE=$(az keyvault secret show --name <SECRET_NAME> --vault-name ${{ secrets.KEYVAULT_NAME }} --query value -o tsv)
echo "::add-mask::$SECRET_VALUE"
echo "SECRET_VALUE=$SECRET_VALUE" >> $GITHUB_ENV
- name: Use retrieved secret
run: echo "The secret is successfully retrieved!"
- name: Use SECRET_VALUE in deployment
run: |
./deploy.sh
env:
SECRET_VALUE: ${{ env.SECRET_VALUE }}