Microsoft AZ-204: Azure 인증, 권한 부여 및 보안 — 학습 가이드

다음의 일부입니다: Microsoft Azure Developer Associate AZ-204 — 학습 가이드. 검증된 답안으로 연습하기: Microsoft 시험 허브, 또는 다음에서 시간 제한 모의고사 풀기: ExamRoll.io.

개요

Azure 인증 및 권한 부여는 Microsoft Identity Platform을 중심으로 이루어지며, 이 플랫폼은 ID(사용자, 앱, 워크로드)에 토큰을 발급하고 API 및 리소스에 대한 액세스를 강제합니다. 애플리케이션은 OAuth 2.0 및 OpenID Connect를 통해 통합하고, MSAL을 사용하여 토큰을 획득하며, Azure AD 앱 등록에 선언된 권한을 요청합니다. Azure에서 실행되는 워크로드는 관리 ID를 사용하여 자격 증명을 완전히 제거하고, Azure RBAC에 의존하여 Key Vault, Storage, Microsoft Graph와 같은 서비스에 접근할 수 있습니다. 비밀 관리는 Azure Key Vault를 중심으로 이루어지며, 볼트 데이터 평면 액세스와 관리 평면 제어가 명확히 분리되고, 일시 삭제(soft delete) 및 제거 방지(purge protection)를 통해 강력한 복구 기능이 보장됩니다. 스토리지의 경우, SAS(공유 액세스 서명)는 계정 키를 노출하지 않고 클라이언트에게 범위가 지정되고 시간 제한이 있는 위임을 제공합니다.

Microsoft Identity Platform, OAuth 2.0, MSAL, 및 앱 등록

Microsoft Identity Platform은 다양한 애플리케이션 유형에 최적화된 여러 OAuth 2.0 흐름을 지원합니다:

MSAL(Microsoft Authentication Library)은 여러 언어와 플랫폼에서 일관된 토큰 획득 방법을 제공합니다. 퍼블릭 클라이언트 애플리케이션(데스크톱, 모바일, SPA)은 AcquireTokenInteractive와 AcquireTokenSilent를 사용하여 토큰을 획득하고 캐시합니다. 네이티브 앱은 디바이스 코드 흐름을 위해 AcquireTokenByDeviceCode를, 기밀 클라이언트 컨텍스트에서 권한 부여 코드를 교환하기 위해 AcquireTokenByAuthorizationCode를 사용하기도 합니다. 기밀 클라이언트(웹 앱/API/데몬)는 클라이언트 자격 증명을 사용할 때 AcquireTokenForClient로 토큰을 획득하고, API가 사용자의 위임된 컨텍스트를 사용하여 다운스트림 API를 호출하는 OBO 시나리오에서는 AcquireTokenOnBehalfOf를 사용합니다.

토큰 캐싱은 MSAL의 핵심적인 부분입니다. 계정, 클라이언트, 범위를 키로 하여 액세스 토큰과 리프레시 토큰을 저장하므로, AcquireTokenSilent를 통해 불필요한 대화형 프롬프트를 피할 수 있습니다. 여러 인스턴스에서 실행되는 웹 앱과 API는 공유되고 암호화된 저장소(예: 저장 데이터 및 전송 중 데이터가 적절히 암호화된 분산 캐시)를 사용하여 토큰 캐시를 유지하고 보호해야 합니다. MSAL의 캐시 직렬화 후크(hook)를 통해 안전한 영속성을 구현할 수 있습니다. 범위(Scope)는 앱이 요청하는 권한을 식별합니다. 위임된 권한의 경우, 최소한의 리소스별 범위(예: https://graph.microsoft.com/User.Read)를 요청하세요. 클라이언트 자격 증명의 경우, 리소스 기반의 /.default를 요청하세요. 이는 앱에 정적으로 부여된 애플리케이션 권한에 매핑됩니다(예: scope = https://graph.microsoft.com/.default). 점진적 동의(incremental consent)를 사용하여 범위를 점진적으로 요청하고 사용자 마찰을 줄이세요.

Azure AD 앱 등록은 애플리케이션 ID, 자격 증명, 리디렉션 URI, 권한을 정의합니다. 위임된 권한은 로그인한 사용자가 필요하며, 종종 사용자가 자신의 데이터에 대해 직접 동의할 수 있습니다. 애플리케이션 권한은 앱 자체에 부여되며, 테넌트 전체 또는 광범위하게 적용되기 때문에 거의 항상 관리자 동의가 필요합니다. API를 노출하는 앱은 “API 노출(Expose an API)” 항목 아래에 범위(위임된 권한용)와 앱 역할(애플리케이션 권한용)을 선언합니다. 신뢰 경계에 따라 단일 테넌트 또는 다중 테넌트 액세스를 구성하고, 더 강력한 자격 증명과 쉬운 순환을 위해 클라이언트 암호 대신 인증서를 사용하세요.

Microsoft Graph는 동일한 토큰 발급 방식을 사용합니다. Graph 리소스를 대상으로 MSAL로 인증하고 최소 권한 범위를 요청하세요. 일반적인 엔드포인트는 다음과 같습니다:

관리 ID와 Azure 리소스에 대한 보안 액세스, 그리고 Key Vault 참조

Azure 리소스용 관리 ID(Managed identity)는 Azure가 서비스 주체(service principal) 자격 증명을 관리하도록 허용하여 비밀(secret)을 제거합니다. 시스템 할당 관리 ID는 리소스(App Service, Function App, VM, VMSS, Logic App 등)와 1:1로 연결되며 해당 리소스의 수명 주기를 공유합니다. 리소스가 삭제되면 ID도 함께 삭제됩니다. 사용자 할당 관리 ID는 여러 컴퓨팅 리소스에 연결할 수 있는 독립적인 Azure 리소스로 생성되며, 특정 워크로드의 수명 주기와는 독립적으로 존재합니다. 이 모델은 ID 재사용 및 직무 분리(separation of duties)를 지원합니다.

관리 ID를 사용하여 Azure 리소스에 액세스하려면, 적절한 범위에서 적절한 Azure RBAC 역할을 부여해야 합니다.

런타임 시, VM의 인스턴스 메타데이터 서비스(Instance Metadata Service, IMDS) 또는 App Service 관리 엔드포인트를 사용하여 토큰을 얻습니다. Azure Identity의 DefaultAzureCredential과 같은 SDK는 관리 ID 엔드포인트를 사용할 수 있을 때 자동으로 사용합니다. 이를 통해 비밀을 저장할 필요가 없으며 플랫폼에 의한 순환(rotation)을 지원합니다.

App Service 및 Azure Functions의 Key Vault 참조를 사용하면 코드 변경 없이 애플리케이션 설정으로 비밀을 안전하게 가져올 수 있습니다. 앱 설정 값에 참조 구문 @Microsoft.KeyVault(SecretUri=https://{vault-name}.vault.azure.net/secrets/{name}/{version})를 사용합니다. 플랫폼은 시작 시 앱의 관리 ID를 사용하여 이 참조를 확인하고 주기적으로 새로 고칩니다. Key Vault 액세스 정책을 통해 또는 RBAC 데이터 평면 모델을 사용할 때 Key Vault 비밀 사용자(Key Vault Secrets User) 역할을 통해 관리 ID가 비밀에 대한 Get 권한을 가지고 있는지 확인해야 합니다. Key Vault 참조는 앱 구성 저장소 내에 일반 텍스트로 저장되어서는 안 되는 구성 값에 이상적이며, 애플리케이션 코드에서 비밀 처리 로직을 제거합니다.

Azure Key Vault: 비밀, 키, 인증서 및 액세스 제어

Azure Key Vault는 세 가지 유형의 객체를 저장합니다.

일시 삭제(Soft delete)는 기본적으로 활성화되어 있어 삭제된 객체를 보존 기간 동안 보존합니다. 제거 방지(purge protection)를 활성화하여 보존 기간 내에 되돌릴 수 없는 삭제를 방지하고 복구 보장을 강제합니다(종종 90일 보존 요구 사항). 엄격한 복구 정책을 충족하려면 일시 삭제와 제거 방지를 함께 사용합니다. 또한, 프라이빗 엔드포인트(private endpoint)로 자격 증명 모음 네트워크 액세스를 보호하고 가능한 경우 공용 네트워크 액세스를 비활성화합니다.

액세스 제어는 레거시 자격 증명 모음 액세스 정책 또는 데이터 평면용 Azure RBAC를 사용할 수 있습니다. 액세스 정책은 자격 증명 모음별로 구성되며 주체(principal)에게 명시적으로 권한(Get, List, Set, Sign, Wrap)을 부여합니다. 이 정책은 상속되지 않으며 대규모 환경에서는 운영 부담이 커질 수 있습니다. RBAC 데이터 평면 모델은 Azure 역할(예: Key Vault 관리자, Key Vault 비밀 책임자, Key Vault 비밀 사용자, Key Vault 암호화 책임자)을 사용하며, 구독, 리소스 그룹 또는 자격 증명 모음 수준에서 범위 지정을 지원하고 Azure RBAC에 감사 기능이 통합되어 있습니다. 하나의 모델을 선택해야 합니다. 데이터 평면에 RBAC가 활성화되면 액세스 정책은 무시됩니다. 관리 평면(management-plane) 작업(자격 증명 모음 생성/업데이트)은 항상 Azure RBAC를 사용합니다.

Azure SDK(예: SecretClient, KeyClient, CertificateClient)와 DefaultAzureCredential을 사용하여 Key Vault를 애플리케이션과 통합합니다. 인증에는 관리 ID를 사용하는 것을 선호하고, 자격 증명을 포함하지 않으며, Vault API를 호출할 때 재시도 및 제한(throttling) 정책을 구현합니다.

Azure Storage SAS와 저장된 액세스 정책

공유 액세스 서명(Shared Access Signatures)은 계정 키를 노출하지 않고 Azure Storage에 대한 세분화되고 시간 제한적인 액세스 권한을 위임합니다:

SAS 토큰에는 만료 시간(se), 시작 시간(st), 권한(sp), IP 범위(sip), 허용된 프로토콜(spr), 서명된 리소스(sr), 그리고 저장된 액세스 정책에 바인딩될 때 사용되는 서명된 식별자(si)와 같은 제약 조건이 포함됩니다. 필요한 권한만 부여하고, 만료 기간을 짧게 유지하며, HTTPS(spr=https)를 강제하여 최소 권한 원칙을 따르십시오. 가능하면 사용자 위임 SAS를 선호하고, 그렇지 않은 경우 해지를 위해 저장된 액세스 정책과 함께 서비스 SAS를 사용하십시오.

저장된 액세스 정책은 컨테이너, 파일 공유, 큐 또는 테이블에 존재하며 재사용 가능한 제약 조건(권한, 시작, 만료) 집합을 정의합니다. SAS를 생성할 때 해당 식별자로 정책을 참조합니다. 이를 통해 모든 SAS 토큰을 재발급할 필요 없이 중앙에서 해지하거나 범위를 좁힐 수 있습니다. 정책을 업데이트하거나 삭제하면 연결된 모든 SAS 토큰에 즉시 영향을 미칩니다. 서비스 또는 계정 SAS를 사용하는 경우 계정 키를 정기적으로 순환하고, 진단 설정 및 Azure Monitor 로그를 통해 사용량을 모니터링하십시오.

실제 문제 시나리오

Adobe는 Azure에서 다중 테넌트 미디어 처리 포털을 출시하고 있습니다. 고객은 자신의 Microsoft Entra ID 테넌트로 로그인하고, 대용량 미디어 파일을 Blob 스토리지에 직접 업로드하며, 처리 상태를 추적합니다. 이 솔루션은 비밀 정보를 저장하지 않고, 권한을 중앙에서 관리하며, 최소 90일 동안 비밀 정보의 복구 가능성을 보장해야 합니다.

  1. Microsoft Entra ID에 애플리케이션 등록:

    • 포털 UI용 SPA와 백엔드 API용 기밀 클라이언트를 생성합니다. 위임된 액세스를 위해 API 범위를 노출하고 백그라운드 작업을 위한 앱 역할을 정의합니다. 정확한 리디렉션 URI와 함께 권한 부여 코드 + PKCE를 사용하도록 SPA를 구성합니다. 이는 각 클라이언트를 올바른 OAuth 흐름에 맞추고 최소 권한 동의 경계를 강제합니다.
  2. SPA와 백엔드에 MSAL 구현:

    • SPA는 증분 동의(incremental consent)와 함께 AcquireTokenInteractive/AcquireTokenSilent를 사용하여 백엔드 API용 토큰을 획득합니다. 백엔드는 AcquireTokenOnBehalfOf를 사용하여 Microsoft Graph를 호출하고 로그인한 사용자의 기본 프로필을 읽습니다. 이는 사용자 컨텍스트를 엔드투엔드로 유지하고 토큰 캐싱을 통해 프롬프트를 최소화합니다.
  3. App Service(API) 및 Azure Functions(미디어 프로세서)에서 시스템 할당 관리 ID 활성화:

    • 미디어 컨테이너에는 Storage Blob 데이터 기여자 역할을, vault에는 Key Vault 비밀 사용자 역할을 할당합니다. 관리 ID는 비밀 정보의 무분별한 확산을 제거하고 플랫폼이 자격 증명을 자동으로 순환하도록 허용하는 동시에 Azure RBAC를 통해 Storage 및 Key Vault에 대한 보안 액세스를 가능하게 합니다.
  4. RBAC 데이터 평면, 일시 삭제(soft delete), 제거 방지(purge protection) 기능으로 Azure Key Vault 구성:

    • 백엔드 어설션을 위한 서명 인증서, 타사 API 키 및 AAD로 대체할 수 없는 모든 연결 비밀 정보를 저장합니다. 90일 동안 복구를 보장하기 위해 일시 삭제와 함께 제거 방지를 강제합니다. RBAC는 감사를 단순화하고 vault별 액세스 정책에 비해 여러 환경에 걸쳐 확장하기 용이합니다.
  5. 구성을 위해 Key Vault 참조 사용:

    • App Service 및 Functions 앱 설정에서 @Microsoft.KeyVault(SecretUri=…)를 사용하여 비밀 정보를 참조합니다. 플랫폼은 관리 ID를 사용하여 값을 확인하고 새로 고치므로 코드 변경이 필요 없고 비밀 정보가 일반 텍스트 구성에 저장되는 것을 방지합니다.
  6. SAS를 사용하여 직접 브라우저 업로드 위임:

    • 백엔드는 IP 및 HTTPS로 범위가 지정된 특정 blob 경로에 대한 단기 쓰기 전용 액세스를 위해 사용자 위임 SAS 토큰을 발급합니다. 운영 배치 도구의 경우, 컨테이너의 저장된 액세스 정책에 연결된 서비스 SAS를 생성하여 정책을 업데이트하거나 삭제함으로써 토큰을 중앙에서 해지할 수 있도록 합니다. 이를 통해 계정 키를 노출하지 않고도 처리량이 높은 클라이언트 업로드가 가능하며 비상시 해지를 지원합니다.
  7. Microsoft Graph 최소한으로 통합:

    • SPA에서는 프로필 표시를 위해 https://graph.microsoft.com/User.Read를 요청하고, 애플리케이션 권한이 필요한 경우(사전 관리자 동의 필요) 백엔드에서 https://graph.microsoft.com/.default를 사용합니다. /.default를 사용하면 백엔드가 중앙에서 부여된 애플리케이션 권한을 존중하고 런타임에 범위를 과도하게 요청하는 것을 방지할 수 있습니다.

이 설계는 권한 부여 코드 + PKCE를 사용하여 SPA를 보호하고, OBO를 사용하여 다운스트림에서 사용자 컨텍스트를 유지하며, 관리 ID와 RBAC를 사용하여 비밀 정보를 제거하고, 강력한 복구 보장 기능이 있는 Key Vault를 사용하고, 구성 위생을 위해 Key Vault 참조를 사용하고, 최소 권한 범위를 가진 Graph를 사용하며, 안전하고 해지 가능한 클라이언트 업로드를 위해 저장된 액세스 정책과 함께 SAS를 사용합니다.


Azure 컨테이너 솔루션 · 모든 도메인 · Azure API 관리

이 문제 연습하기 → · ExamRoll.io에서 시간 제한 연습 →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

시험 합격하기 →

Microsoft 찾아보기 →

Related guides

올인원 액세스

하나의 구독. 모든 시험.

모든 플랜은 무제한 답변 검색, 모의고사, AI 해설, 전체 자료 라이브러리를 20개 이상의 언어로 잠금 해제합니다.

월간
24.87
Just €0.83/day
모든 포함:
  • 무제한 답변 검색
  • 무제한 모의고사
  • AI 기반 해설
  • 전체 자료 라이브러리
  • 20개 이상의 언어
  • 주간 콘텐츠 업데이트
  • 보상 및 추천
  • 우선 지원
무료 체험 시작

신용카드 필요 없음*

최고의 가치
12개월
179.87
Just €0.49/daySave 40%
모든 포함:
  • 무제한 답변 검색
  • 무제한 모의고사
  • AI 기반 해설
  • 전체 자료 라이브러리
  • 20개 이상의 언어
  • 주간 콘텐츠 업데이트
  • 보상 및 추천
  • 우선 지원
무료 체험 시작

신용카드 필요 없음*

✓ 무료 플랜 포함 · ✓ 언제든지 취소 가능 · ✓ 모든 플랜은 전체 제품을 잠금 해제합니다