서비스 주체(Service Principal)
- Azure 리소스에 대한 인증 정보 제공 및 권한 부여
- Azure CLI를 통해 생성 가능
응용프로그램 또는 인프라 또는 Azure 인프라 제품들을 사용하기 위한 앱에 대한 ID를 만드는 과정이 서비스 주체(Service Principal) 입니다.
이는 응용프로그램 APP에서 Azure 인프라를 수정 하기 위해서 등록하고 사용 기간 설정등 자동화를 위해서 필요한 제품이며 이 권한은 AAD에서도 매우 중요한 기능입니다. 그래서 권한이 없는 사용자들은 함부로 이 서비스 주체를 만들수 없도록 세팅하는것은 매우 중요합니다.
서비스 주체(Service Principal) 생성
Azure Cloud Shell 실행
Terraform용 Service Principal 생성 (terrformuser)
- az ad sp create-for-rbac --name <계정명> --role Contributor --scopes /subscriptions/< subscription_id_or_subscription_name>
- appId, password, tenant 값은 별도로 기록, 검색이 불가능한 값으로 분실 시 재생성 필요.
Microsoft Entra ID 에서 생성 된 계정 확인 가능
- "Microsoft Entra ID" -> "앱 등록" -> "모든 애플리케이션" 선택
VSCode 연동 및 Resource Group 생성 테스트
아래와 같이 main.tf 파일 생성
- 자격 증명을 위해 subscription_id, tenant_id, client_id, client_secret 총 4개의 값이 필요
- 간단한 테스트 용도가 아닌경우 해당 값은 환경 변수 등록 또는 암호화 하여 처리하는게 좋음 (ID, 패스워드 보호)
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "4.4.0"
}
}
}
provider "azurerm" {
# Configuration options
features {}
subscription_id = "<구독 ID>"
tenant_id = "<디렉터리(테넌트) ID>"
client_id = "<개체 ID>"
client_secret = "<password>"
}
resource "azurerm_resource_group" "rg" {
location = "koreacentral"
name = "Azure-test-rg"
}
저장이 완료 되었으면 아래 명령으로 생성 진행
- terraform init
- terraform plan
- terraform apply -> "yes" 입력
Azure Portal 에서 생성 확인