반응형
Azure에서 사용하는 ID 유형
Azure에서 사용되는 ID는 크게 사용자 ID, 애플리케이션 ID, 서비스 ID, 관리 ID 등으로 분류됩니다.
ID 유형설명예제
User ID (사용자 ID) | Azure AD에 등록된 사용자의 고유 식별자 | user@domain.com |
Service Principal ID (서비스 프린시플 ID) | Azure AD에서 특정 애플리케이션이 인증을 받을 때 사용되는 ID | 7642c9a7-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
Client ID (클라이언트 ID, 애플리케이션 ID) | Azure AD에 등록된 애플리케이션의 고유 식별자 | 5500b6f8-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
Managed Identity (매니지드 ID) | Azure 서비스가 다른 Azure 리소스에 접근할 때 사용하는 ID | Managed Identity의 Principal ID |
Tenant ID (테넌트 ID) | Azure AD 디렉터리(테넌트)의 고유한 ID | 72f988bf-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
Object ID (오브젝트 ID) | Azure AD에서 개별 사용자, 그룹, 애플리케이션을 고유하게 식별하는 ID | 37e96e2b-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
Subscription ID (구독 ID) | 특정 Azure 구독을 식별하는 고유한 ID | 0a1b2c3d-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
Azure에서 사용하는 인증 방식
Azure에서 제공하는 인증 방식은 크게 사용자 인증, 애플리케이션 인증, 서비스 간 인증으로 나뉩니다.
1. 사용자 인증 방식
사용자가 Azure 리소스 및 애플리케이션에 로그인할 때 사용하는 방식입니다.
1.1 Azure Active Directory (Azure AD)
Azure AD는 Microsoft의 클라우드 기반 ID 및 액세스 관리 시스템으로, 사용자를 인증하고 애플리케이션 및 리소스에 대한 권한을 부여합니다.
- 사용자 이름/비밀번호 인증
- user@domain.com과 같은 Azure AD 계정을 사용하여 로그인
- MFA(다중 요소 인증)와 함께 사용 가능
- 싱글 사인온 (SSO, Single Sign-On)
- 한 번 로그인하면 여러 애플리케이션에 접근 가능
- Microsoft 365, Azure Portal, SaaS 애플리케이션 등에 적용
- 다중 요소 인증 (MFA, Multi-Factor Authentication)
- 비밀번호 외에 추가 보안 요소(OTP, Microsoft Authenticator 앱, SMS 등)를 사용
- 보안 강화를 위해 필수적
- Windows Hello for Business
- 생체 인식(지문, 얼굴 인식) 또는 PIN을 사용하여 Azure AD에 로그인
- Conditional Access (조건부 액세스)
- 위치, 디바이스 상태, 로그인 위험도에 따라 인증을 제어
2. 애플리케이션 및 서비스 간 인증 방식
Azure의 API, 서비스, 애플리케이션 간 인증을 위한 방식입니다.
2.1 OAuth 2.0 + OpenID Connect
- OAuth 2.0은 Azure AD가 애플리케이션과 API 간의 인증 및 권한 부여를 처리하는 프로토콜입니다.
- OpenID Connect는 OAuth 2.0을 기반으로 한 인증 프로토콜이며, ID 토큰(ID Token)을 제공하여 사용자를 인증합니다.
🔹 OAuth 2.0 인증 흐름
- 애플리케이션이 Azure AD에 Client ID와 함께 인증 요청을 보냄
- Azure AD가 사용자를 인증하고 액세스 토큰을 발급
- 애플리케이션이 액세스 토큰을 사용해 API 요청 수행
2.2 Service Principal (서비스 프린시플) 인증
Azure에서 특정 애플리케이션이 Azure AD에서 인증을 받고 Azure 리소스에 접근할 때 사용하는 ID입니다.
- Client ID (애플리케이션 ID) + Client Secret 또는 **Certificate (인증서)**를 사용하여 인증
- RBAC (Role-Based Access Control)과 함께 사용되어 특정 리소스에 대한 권한을 부여 가능
🔹 서비스 프린시플을 사용한 인증 예제
az login --service-principal -u <CLIENT_ID> -p <CLIENT_SECRET> --tenant <TENANT_ID>
2.3 Managed Identity
Azure 리소스(VM, Azure Functions 등)가 다른 Azure 서비스에 안전하게 인증할 수 있도록 하는 기능입니다.
- 비밀번호 없이 Azure AD에서 자동으로 인증을 수행
- VM, Logic Apps, Azure Functions 등에서 Azure Key Vault, Azure Storage 등에 접근할 때 사용됨
🔹 Managed Identity 인증 흐름
- Azure 서비스(VM, Function 등)에 Managed Identity 할당
- 서비스가 Azure AD에 토큰 요청
- Azure AD가 해당 Managed Identity를 인증하고 토큰 발급
- 서비스가 발급된 토큰을 사용하여 Azure 리소스에 접근
🔹 Managed Identity를 사용한 Azure Key Vault 인증
from azure.identity import ManagedIdentityCredential
from azure.keyvault.secrets import SecretClient
credential = ManagedIdentityCredential()
key_vault_url = "https://<your-keyvault-name>.vault.azure.net"
client = SecretClient(vault_url=key_vault_url, credential=credential)
secret = client.get_secret("my-secret")
print(secret.value)
Azure에서 API 인증 방식
Azure API에 대한 인증은 OAuth 2.0 및 Shared Key, API Key 등을 사용할 수 있습니다.
3.1 Azure REST API 인증
Azure REST API를 호출하려면 Azure AD 액세스 토큰을 발급받아야 합니다.
Azure CLI로 API 인증 (OAuth 2.0 사용)
az account get-access-token --resource=https://management.azure.com
Azure API 요청 예제
curl -X GET "https://management.azure.com/subscriptions//resourceGroups?api-version=2021-04-01" \ -H "Authorization: Bearer <ACCESS_TOKEN>"
Azure에서 ID 및 인증 방식 정리
유형 | 설명 | 인증방식 |
사용자 ID | Azure AD에서 개별 사용자를 식별 | 비밀번호, MFA, SSO, Windows Hello |
Client ID (애플리케이션 ID) | Azure AD에 등록된 애플리케이션을 식별 | OAuth 2.0, OpenID Connect |
Service Principal ID | 애플리케이션이 Azure 리소스에 접근할 때 사용 | Client ID + Secret / Certificate |
Managed Identity | Azure 서비스가 다른 Azure 리소스에 접근할 때 사용 | Azure AD에서 자동 인증 |
Tenant ID | Azure AD 테넌트를 식별하는 ID | Azure AD 기반 인증 |
Subscription ID | Azure 구독을 식별하는 ID | Azure 리소스 관리 |
반응형
'CLOUD > AZURE' 카테고리의 다른 글
[Azure] Subscription과 Active directory는 AWS에서 어떤것과 비슷할까? (0) | 2025.02.23 |
---|---|
Azure Active Directory에 대해 알아보자! (0) | 2025.02.21 |
Service Principal vs managed Identity (0) | 2025.02.18 |
Azure Managed Identity(MID) (0) | 2025.02.18 |
Azure subnet Delegation 에 대해 (0) | 2025.02.04 |
댓글