인공지능,프로그래밍/MS Azure

새로운 직원을 추가하고 다단계 인증하기 문제

AI 마을1 2025. 5. 2. 12:19

이 문제는 Azure AD에서 MFA(Multi-Factor Authentication)를 특정 조건에서 적용하는 정책 모델을 재구성하는 시나리오이며, 핵심은 **"사용 위치 기반 MFA 정책"**과 이를 Azure CLI를 통해 해결할 수 있는지에 대한 것입니다.


📌 문제 요약

  • 현재 구성:
    사용자가 사무실에 없을 때만 MFA가 적용되는 조건부 접근(Conditional Access) 모델 사용 중.
  • 문제 발생 상황:
    • 다른 회사를 인수하면서 새로운 사용자가 Azure AD에 추가됨.
    • 이 사용자들에 대해 기존의 MFA 정책이 자동으로 적용되지 않음.
    • 알림 메시지로 "이 사용자는 MFA 정책이 활성화된 모델에 속해 있어야 합니다"라는 내용이 나옴.
  • 목표:
    기존 사용 모델에 대해 활성화된 사용자별 설정을 다시 지정해야 함.
  • 제안된 해결 방법:
    Azure CLI를 통해 기존 사용 모델을 재구성(reconfigure).

✅ 핵심 기술 개념 해설

1. **인증 옵션이 사용 모델 기반(MFA per-user 또는 조건부 접근 기반)**일 경우

  • Azure AD의 기존 MFA 모델은 두 가지 방식 중 하나로 운영됩니다:
    • Per-user MFA: 사용자 계정별로 직접 MFA를 설정.
    • Conditional Access 기반 MFA: 위치, 그룹, 앱 등 조건을 기준으로 MFA 적용.

2. 조건부 접근 정책의 주요 특징

  • 조건부 접근 정책은 사용자 또는 그룹 수준에 적용되며, "사용자가 회사 네트워크 바깥에 있을 때 MFA 필요"와 같은 위치 기반 정책을 만들 수 있습니다.
  • 하지만 새로 추가된 사용자나 외부 인수된 사용자는 기존 정책 범위에 포함되지 않으면 MFA가 적용되지 않습니다.

3. Azure CLI로 해결 가능한가?

  • Azure CLI로 조건부 접근 정책 자체를 생성하거나 업데이트하는 것은 불가능합니다.
    (조건부 접근은 PowerShell 또는 Graph API를 사용해야 합니다.)
  • Azure CLI는 per-user MFA 설정 정도는 가능하지만, 사용 모델을 재구성하거나 정책 범위를 동적으로 수정하는 기능은 제한적입니다.

❌ 결론: B. No

이 솔루션은 목표를 달성하지 못합니다.
왜냐하면:

  • Azure CLI만으로는 조건부 접근 정책을 관리하거나 범위에 사용자 포함 작업을 수행할 수 없기 때문입니다.
  • 조건부 접근 정책은 Azure Portal, PowerShell (MSGraph), 또는 Microsoft Graph API를 사용해야 수정이 가능합니다.

✅ 올바른 해결 방향

  • Azure Portal에서 조건부 접근 정책을 열고, 새로 인수한 사용자 그룹 또는 디렉터리를 해당 정책의 **할당(Target)**에 추가해야 함.
  • 또는 PowerShell로 다음과 같이 관리 가능:
  • Connect-MgGraph Update-MgConditionalAccessPolicy -PolicyId <policy-id> -Conditions <updatedConditions>

📚 참고 자료


 

Q. 조건부 접근 정책의 사용자 범위를 자동으로 업데이트하려면 어떤 도구나 API를 사용해야 하나요?

 

조건부 접근 정책(Conditional Access Policy)의 사용자 범위를 자동으로 업데이트하려면 Microsoft Graph API를 사용하는 것이 가장 강력하고 유연한 방법입니다.

PowerShell을 통해 이 API에 접근하는 방식이 일반적으로 쓰이며,

Azure CLI는 이 작업을 지원하지 않습니다.


✅ 조건부 접근 정책 사용자 범위 자동 업데이트 도구/방법

방 법 설 명 적합도
Microsoft Graph API (v1.0 or beta) 조건부 접근 정책의 속성(사용자, 그룹, 앱, 조건 등)을 직접 조작 가능 ★★★★★
PowerShell + Microsoft Graph SDK PowerShell 스크립트를 통해 정책 업데이트 자동화 ★★★★★
Azure Portal (수동) 정책 수정 가능하나 자동화에는 부적합 ★☆☆☆☆
Azure CLI 사용자 및 그룹 관리 가능하나 조건부 접근 정책은 미지원 ☆☆☆☆☆

📌 Microsoft Graph API로 정책 사용자 범위 업데이트하기 (예제)

1. 대상 정책 조회

GET https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies
Authorization: Bearer 

2. 특정 정책의 사용자 범위 수정 (예시)

PATCH https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies/{policy-id}
Content-Type: application/json
Authorization: Bearer 

{
  "conditions": {
    "users": {
      "includeGroups": [
        "group-id-1",
        "group-id-2"
      ]
    }
  }
}

위 JSON은 해당 정책을 두 개의 그룹 ID로 범위를 재설정하는 예시입니다.


✅ PowerShell로 자동화하는 방식 (Microsoft Graph SDK)

1. 연결 및 로그인

Connect-MgGraph -Scopes "Policy.ReadWrite.ConditionalAccess"

2. 정책 업데이트

Update-MgConditionalAccessPolicy -ConditionalAccessPolicyId "<policy-id>" `
  -Conditions @{
    Users = @{
      IncludeGroups = @("group-id-1", "group-id-2")
    }
  }

🔐 권한 요건

권한 유형 필요한 권한
Microsoft Graph Delegated Policy.ReadWrite.ConditionalAccess
Azure AD Role Security Administrator 또는 Global Administrator

📚 공식 문서


 

Q. 조건부 접근 정책을 여러 테넌트에 자동 배포하고 관리하는 가장 효율적인 방법은 무엇인가요?

 

조건부 접근 정책(Conditional Access Policy)을 여러 Azure AD 테넌트에 자동으로 배포하고 관리하려면, 단일 테넌트용 설정과는 다른 차원의 템플릿 기반 자동화 및 멀티 테넌트 관리 전략이 필요합니다. 이 작업은 대규모 조직이나 MSP(Managed Service Provider) 환경에서 특히 중요합니다.


✅ 가장 효율적인 멀티 테넌트 정책 배포 전략

1. Microsoft Graph API + PowerShell 스크립트 + 템플릿 기반 접근

구성 요소 역할
Graph API 조건부 접근 정책의 CRUD 작업을 수행
PowerShell + Microsoft Graph SDK 자동 배포 스크립트 작성 가능
정책 템플릿(JSON) 재사용 가능한 정책 정의 저장
CSV or JSON 테넌트 목록 대상 테넌트 관리에 사용

예시 구조

├── tenants.csv
├── policies/
│   ├── baseline-mfa.json
│   └── block-legacy-auth.json
└── deploy-policies.ps1

2. 정책 정의 템플릿화 (JSON)

각 정책을 JSON 형식으로 정의합니다.
예시: baseline-mfa.json

{
  "displayName": "Baseline MFA for Admins",
  "state": "enabled",
  "conditions": {
    "users": {
      "includeRoles": ["62e90394-69f5-4237-9190-012177145e10"]  // Global Admin
    }
  },
  "grantControls": {
    "operator": "OR",
    "builtInControls": ["mfa"]
  }
}

3. PowerShell로 반복 배포 자동화

$tenants = Import-Csv "./tenants.csv"

foreach ($tenant in $tenants) {
    Connect-MgGraph -TenantId $tenant.TenantId -ClientId $tenant.AppId -CertificateThumbprint $tenant.CertThumb

    $policy = Get-Content "./policies/baseline-mfa.json" | ConvertFrom-Json
    New-MgConditionalAccessPolicy -DisplayName $policy.displayName `
                                  -State $policy.state `
                                  -Conditions $policy.conditions `
                                  -GrantControls $policy.grantControls

    Disconnect-MgGraph
}

✅ 대안 솔루션: Azure Lighthouse + Azure Policy

방법 설명  장점  단점
Azure Lighthouse 여러 테넌트를 중앙 관리 가능 보안/권한 위임 통합 조건부 접근은 직접 지원 안 함
Azure Policy (정책) 일부 보안 제어는 정책화 가능 자동 감사 및 규정 준수 조건부 접근은 부분 지원

✅ 관리 전략 팁

  • 버전 관리: 정책 버전을 Git에 저장
  • 정책 표준화: 동일한 정책 명명 규칙 및 조건 구조 유지
  • 사전 검증: 테스트 테넌트에서 배포 후 전체 확산
  • 예외 처리: 일부 테넌트는 제외하거나 다른 정책 할당

📚 공식 자료