[AZ-305] Design identity, governance, and monitor solutions

สำหรับ Blog นี้ ผมสรุปมาตามนี้นะครับ อาจจะเจอบางอันเขียนคำว่า Azure AD อยู่นะ เพราะมันเขียนมาตั้งแต่ ปี 2022 ครับ โดยหัวข้อจะมี ดังนี้

Design governance

Recap กันก่อน Azure มี Level การจัดการดังนี้ Tenant Root Group > Management Group > Subscriptions > Resource Group > Resouces เล็กสุด กลยุทธ์ในการสร้าง Governance จะมี Azure Policies / Recsource Tags

Management Group - จุดที่ Apply Policy ที่ Common โดย Level ได้ 6 Level ไม่รวม Root

  • Design management groups with governance in mind
  • Keep the management group hierarchy reasonably flat - ปกติ 3-4 Level ถ้าลึกมากจะจัดการลำบาก
  • Consider a top-level management group - top-level ใส่ common policy/azure role
  • Consider an organizational or departmental structure
  • Consider a geographical structure - จะได้กำหนด Policy ตาม Region
  • Consider a production/sandbox (Dev/Test) management group
  • Consider isolating sensitive information in a separate management group - เพื่อ Secure Sensitive Data

Subscriptions

  • Treat subscriptions as a democratized unit of management เช่น จับตาม business needs + priorities.
  • Group subscriptions together under management groups
  • Consider a dedicated shared services subscription - ensure all common network resources are billed together and isolated from other workloads เช่น พวก Azure ExpressRoute / Virtual WAN
  • Consider subscription scale limits - specialized workloads HPC, IoT, and SAP ควรแยก Subscription ออกไป จะได้ไม่ติดเรื่อง Resource Limit
  • Consider administrative management.
  • Consider how to assign Azure policies
  • Consider network topologies
    - vnet มันไม่สามารถแชร์ข้าม Subscription ได้นะ ดังนั้นต้องเอาท่าอื่นมาช่วย อย่าง VNET Peering /
  • Consider making subscription owners aware of their roles and responsibilities

resource groups - มันมี region เอาไว้เก็บ metadata นะ ถ้า region พัง จะเอ๋อๆนิดหน่อย แต่ resource ไม่จำเป็นต้องอยู่ region เดียวกับ resource group ก็ได้ + nested ไม่ได้

  • Consider group by type เช่น SQL-RG / WEB-RG เป็นต้น
  • Consider group by app
  • Consider group by department, group by location (region), and group by billing (cost center)
  • Consider a combination of organizational strategies
    - the combination of options is best"
    - ใช้ตามความเหมาะสม ไม่จำเป็นต้องแบบเดียวกันทั้ง Org
  • Consider resource life cycle - นึกภาพเคส Staging / Production เลย หรือ รอบการ update เอามาไว้ใน RG เดียวกันได้
  • Consider administration overhead - คนจัดการ RG
  • Consider resource access control - Policy / Role (2 อันนี้ มาจาก Management Group) / Resource Lock
  • Consider compliance requirements

resource tags - name-value pair เอาไว้จัดการอืนๆ เช่น Billing

  • organization's taxonomy
  • IT-aligned or business-aligned tagging
  • Consider the type of tagging required เช่น Functional, Classification ( เช่น confidentiality / SLA) Accounting (หน้าที่) , Partnership (คนที่เกี่ยวข้อง), Purpose
  • starting with a few tags and then scale out
  • Azure policy to apply tags and enforce tagging rules and conventions.
  • which resources require tagging

Azure Policy มี Policy แบบ built-in policy / initiatives (จัดกลุ่มของ Policy เข้าด้วยกัน) / inherited down the hierarchy ที่ให้จัดตาม Management Group / prevent noncompliant resources from being created อ๋อและใช้กับ Azure DevOps ได้ด้วยนะช่วง pre/post deployment โดยมีสิ่งที่ต้องพิจารณา ดังนี้

  • ตรวจสอบจาก Azure Policy compliance dashboard มันเห็นภาพรวม และช่วยทำ Bulk Remediation ได้
  • Understand when and how evaluations are triggered เช่น ตอน Resource ถูกสร้าง หรือ Apply Policy อันนี้ Evaluation Cycle 24 hrs
  • how to handle a non-compliant resource - ปรับตาม / Log / ไม่สนใจ
  • when to automatically remediate noncompliant resources - Azure Policy can tag resources and reapply tags ได้ อาทิ เช่น Location บอก Region เป็นต้น
  • how Azure Policy is different from role-based access control (RBAC) - มีดังนี้
    - Azure Policy to ensure the resource state ตาม business rules.
    - Azure RBAC to focus on user actions at different scopes + Control resource access

Role-based access control (RBAC) - An allow model + additive model, Azure RBAC enables the user to perform the actions associated with that role.

Default จะปิดไง ถ้าจะใช้ต้องกำหนดให้ User / Group นั้นๆ โดยมีสิ่้งที่ต้องพิจารณา ดังนี้

  • highest scope level for each requirement - Key ทำ role definition และกำหนด Assign จะ management groups, subscriptions, resource groups, and resources.
    จะได้ลด Effort + assigning roles to groups, and not users ถ้าทำที่ละจุด จะจัดการยาก
  • Consider the access needs of each user - ชอบภาพนี้นะ หามานาน
  • when to use Azure policies vs Azure RBAC
  • custom role shared between subscriptions - แต่ใช้ Azure AD เดียวกัน
  • how to resolve overlapping role assignments ยกตัวอย่าง user เดียวกัน ได้ Role Subscription (Contributor) / Resource group (Reader) มันยึดตัวใหญ่กว่า additive model

Azure Blueprints - scale governance practices + orchestrates the deployment throughout an organization โดยสิ่งต้องพิจารณาจากตอน Compose

  • Resource groups
  • Azure Resource Manager (ARM) Templates
  • Policy assignment - policy or initiative must be within the scope of the blueprint definition
  • Role assignment

Azure landing zone provides an infrastructure environment for hosting your workloads / defined by management groups and subscriptions
โดยมีสิ่งที่ต้องสนใจ ดังนี้

Sample Landing Zone
  • including landing zones in your design
  • creating landing zones through code - มันช่วยให้ Re-created ง่าย
  • ใช้ Azure landing zone accelerator ทำให้เห็นภาพ conceptual ว่าจะ Link กับ management group ไหน และช่วย transitioning existing architectures to Azure landing zones
  • application-centric migrations and development + Use Azure-native design and aligning with the platform- พยายาม modernize มากกว่า lift-and-shift เช่น มี Web ให้ App Service + Azure SQL แทนที่จะใช้ Azure VM แต่จริงๆ อันนี้มันทำให้เรา Coupling กับ Azure ไปเลยนะ
  • scoping for both migrations and greenfield (ทำใหม่) situations
  • อย่าลืมทำ Azure landing zone review ก่อน Start

Knowledge check: Design governance

Design authentication and authorization solutions

identity and access management (IAM)

  • IAM - Unified identity management / Seamless user experience / Secure adaptive access (authentication and risk-based adaptive access policies) และ Simplified identity governance //สรุปรวมศูนย์ ง่าย และสะดวก ไม่กระทบ User
  • ที่ควรพิจารณาสำหรับใช้ IAM
    - ใช้ Entra Id (Azure AD) - Internal
    - Microsoft Entra External ID (Azure AD B2B) กรณี ฺBusiness กับ Business เช่น เรา กับ Vendor
    - Azure Active Directory B2C กรณี ฺBusiness กับ Customer เช่น เรา กับ ลูกค้า ที่อาจจะสมัคร App ไงงี้

Design for Azure Active Directory

  • Entra Id (Azure AD) ตัว IAM ของ Azure ที่เตรียมไว้ให้ Link ได้ทาั้ง Azure + On-Premises
  • สิ่งที่ควรพิจารณาสำหรับใช้ Entra Id
    - benefits of centralized identity management - จัดการง่าย
    - using a single Microsoft Entra instance - ลด Risk/Human Error + จัดการง่าย
    - limiting account synchronization - Don't synchronize accounts to Active Directory that have high privileges in your existing Azure AD //สิทธิสูง ให้แยก
    - password hash synchronization - sync helps to protect leak แบบว่าเปลี่ยน Cloud แต่ On-Premises เหมือนเดิม
    - single sign-on (SSO) - reduce multiple identity
    - overhead of managing separate identities - มีเยอะเพิ่ม mistakes + security breaches

Microsoft Entra business-to-business (B2B) - จัดการ External Identity //ตอนแรกฟัง 104 มาก็งงๆ ตอนนี้เข้าใจ และ

  • ตัว External Identity เราไม่ต้องจัดการ //ฝั่งเราจัดการสิทธิ apps and services
  • สิ่งที่ควรพิจารณาสำหรับใช้ Azure AD (B2B)
    - designating an app owner to manage guest users. ให้ app owner จัดการ รู้ว่าใครควรใช้ และลดภาระ Admin
    - MFA + conditional access policies to control access
    - integration external (Microsoft นอกองค์กร / FB / Google etc.) identity providers
    - self-service sign-up user flow - ลดภาระ Admin

Azure Active Directory B2C (business-to-customer)

  • B2B กับ B2C ต่างกันยังไง ?

WoodGrove Groceries tutorial - Sample นี้ดี มี use-case เยอะดี

  • สิ่งที่ควรพิจารณาสำหรับใช้ Azure AD (B2C)
    - reusable flows for user journey - user flows
    - allowing users to sign in with their social identities (นึกพวก FB / Google / Twitter etc)
    - customizable user interface to support branding - custom UI สำหรับองค์กร ดูเพิ่มได้จาก page layout templates.
    - integration with external user stores - custom field หรือ จะเอาข้อมูลจาก External System อย่าง CRM ก็ได้
    - customizable user interface to support branding

Conditional Access - เอาร่วมกับ MFA เพื่อให้ Secure ขึ้่น ดูจาก Condtion + Risk การเปิดใช้งาน Report-only mode ช่วยให้เห็น Impact หรือจะ What If ช่วยแก้ปัญหา หรือ Simulate ก่อน Implement

  • สิ่งที่ควรพิจารณาสำหรับใช้ conditional access
    - MFA for more granular control. ทำให้ยืดหยุ่น มาจาก Device ขององค์กร
    - preventing access from specific geographic areas - IP แปลก Block ไว้
    - access only from managed devices
    - access only from approved client apps - จะเป็นเรื่อง BYOD เอา Device มาเอง
    - using policies to handle compromised accounts - ถ้ามี user ส่งสัยว่า Identity หลุด Required เจ้าตัวทำ MFA หรือ ทุกคนเป็นต้น
  • blocking access + เคส Migrate กันคนมาทำอะไรแปลกๆ หรือ legacy authentication protocols
  • Consider running Report-only mode - evaluate the impact of Conditional Access policies before enabling บอกผลกระทบ
  • Consider using the What If tool - ตัว  What If เป็น Tools ที่ช่วยตรวจสอบ Conditional Access

Identity Protection - tool ที่เอา Signal มาได้จาก SIEM และนำมา Apply ช่วยจัดการเรื่อง Automate the detection and remediation of identity-based risks / Investigate risks (จาก Signal) / Export risk detection data 

  • Identity Protection มี 2 กลุ่ม User risk (เช่น Leaked credentials / AI เจอ Activity แปลกๆ) และ Sign-in risk (เช่น IP แปลก / Password Spray)
  • สิ่งที่ควรพิจารณาสำหรับใช้ Identity Protection
    - "High" threshold for user risk policy - ช่วยดู leaked credentials / unusual activity + known attack patterns
    - "Medium and above" threshold for sign-in risk policy - Option นี้ มัน self-remediation options อย่าง MFA หรือ เปลี่ยน Pass และไม่ไป Block การทำงานของ User
    - investigating risks in the Azure portal
    - exporting your risk detection data

Design for access reviews - คนเรามีหมวกหลายใบ และมีการปรับเปลี่ยนอยู่ตลอด ย้ายหน่วย ย้ายงาน ลาออก บราๆ การจัดการสิทธิ เพื่อให้มัน Up to Date และลดความเสี่ยงที่คนที่ไม่เกี่ยวข้อง ยังเข้าถึง Resource ได้อยู่

  • Review Azure AD roles + Azure Resource roles Access จาก Privileged Identity Management (PIM).
  • access review plan
    - ใครที่เกี่ยวข้อง: Resource owners / Delegates (Admin มอบหมาย) / End Users ที่ยังใช้ //อารมณ์ ถ้าไม่แจ้งตัดออก
    - อะไรที่ต้อง Review: Azure AD roles + Azure Resource roles
  • จัดกลุ่มการ Review ยังไง โดยมีคำถาม ดังนี้
    - What are the resources to review
    - How often should the access review be done
    - Who are the reviewers
    - How will reviewers be notified
    - How long should the review take to complete
    - Are there automatic actions for these resources - default remove สิทธิสำหรับคนที่ไม่ได้ access เกิน x วัน หรือเอาออกหมดเลย
    - Are there manual actions available to the reviewers
    - How will affected users be notified - คนที่เกี่ยวข้อง จะมีแจ้งเตือนไหม
  • ดูอันนี้เพิ่มได้ละเอียดดี What are access reviews? - Microsoft Entra

Design service principals for applications

  • two ways an app can be represented in Azure AD
    - Application objects (definition for an app 1-1)
    - Service principals (definition for an app 1-many) แยก tenant จะมาตอน registration /consent หรือจะใช้ Tools อื่นๆ อย่าง PowerShell, Azure CLI, Microsoft Graph เป็นต้น
  • service principals
    - application service principal
    - Managed identity
    - Legacy - มาก่อน before app registrations / ใช้ได้ภายใน tenant
  • สิ่งที่ควรพิจารณาสำหรับใช้ service principals
    - Consider how to create your application service principals โดยมาจากหลายแบบ
    1. app is given permission to access resources จาก registration or consent / service principal
    2. register an app ตัว service principal สร้างมานะ
    ตัว service principal สร้างได้จากหลายตัว CLI / MS Graph / ..
    - Use service principals without managed identities when you want to be able to manage the credentials.
    - Authenticate external apps to Azure resources by using service principals.
    - best practices for requesting permissions - ขอเท่าที่ใช้ (least-privileged) / Error แจ้งให้ชัดว่าขาดอะไร ติดต่อใคร remedy the issue
    - restricting user consent - ทำได้ แต่ต้องเข้ากับ policy ของ org

Design managed identities

  • managed identity - เป็นตัวที่เราจะให้ App ถือ Azure AD tokens มา access resource ต่อ โดยมี 2 แบบ
    - System-assigned (มาคู่กับ Resource)
    - User-assigned (จัดการเอง ให้ Resource ใช้ Identity เดียวกัน)
  • A managed identity combines Azure AD authentication and Azure role-based access control (RBAC).
  • สิ่งที่ควรพิจารณาสำหรับใช้ managed identities
    - using system-assigned managed identities
    - choosing user-assigned managed identities - workloads with resources that are recycled frequently / ต้องการ Shared Identity อาจจะทำเป็น Pre-Authorization
    - Consider your Azure services and your targets บาง Service เช่น VM / AKS เราเอา managed identities มาใช่กับ Resource อื่นๆได้ เช่น Azure Key Vault, Azure Storage, Azure SQL เป็นต้น
    - managed identities for VMs in Azure
    -> ตัวอย่าง Lab ใน AZ-400 เลย Tailwind Traders stock-tracking apps inside an Azure-hosted VM that has an assigned managed identity. This setup allows the app to use an Azure key vault to authenticate
    -> พอใช้ key vault และเอา Code ที่ Hard Code ในส่วน Authentication ออกได้
    - ใช้ Azure Key Vault authentication for Azure resources.

Design for Azure Key Vault

  • Azure Key Vault
    - เป็น Centralized secret storage จัดการ secrets / keys / certificates ทำให้ไม่มีอะไรตกหล่นไว้ใน Code ของ Deploy ของเรา
    - โดย Tier Premium จะมี hardware security module (HSM) ด้วย
  • สิ่งที่ควรพิจารณาสำหรับใช้ Azure Key Vault
    - shared access signatures (SAS) for clients - delegate หลังจาก Login ขอ SAS Token เลย หรือถ้าไม่มีใช้ SAS Token
    - Consider user read and write access to your storage account.
    1. Clients upload and download data via a front-end proxy service that performs authentication. ช้าลง
    2. A lightweight service shared access signature มาเข้าถึง Resource
    3. hybrid approach 1+2
    - data protection for your key vault: Soft Delete (กันลบแบบไม่ตั้งใจ) / Purge protection (Recycle Bin)
    - using separate key vaults อย่างใช่ key เดวกับทุกระบบ
    - access to the key vault - access policy / least privilege / firewall / network

Knowledge check: Design authentication and authorization solutions

Design a solution to log and monitor Azure resources

Design for Azure Monitor

  • data sources มี 2 อย่างที่สำคัญ Log + Metric และมี Sources of monitoring data from 
    - high application เรา
    - low ของ azure
  • สิ่งที่ควรพิจารณาสำหรับใช้ Azure Monitor
    - data sources and data access
    -> Application data จาก Code ของเรา
    -> Operating system data มี 3 ส่วน Diagnostic extension / monitor log / VM Agents
    -> Azure resource data - เช่น web app / load balancer.
    -> Azure subscription data - ข้อมูล Subscription / Azure health and availability.
    -> Azure tenant data - Azure organization-level services - Azure Active Directory.
    -queries on Logs data
    -alerts based on Logs and Metrics data
    -Metrics Explorer to analyze metrics interactively

Design for Azure Monitor Logs (Log Analytics) workspaces

  • Azure Monitor Logs (Log Analytics) เก็บ Log ของ Azure Monitor โดยการ Deploy มี Factor ที่ต้องดู ดังนี้
    - Availability, latency, and cost - hot / cool / cold / archive + premium storage + geolocation
    - Immutable storage - ตามกฏหมาย (Legal hold) / Time-based retention
    - single workspace for all resource with Azure RBAC
    - ถ้า Data > 500 GB ควรเลือก own dedicated clusters สำหรับ Workspace
ตัวอย่าง Infra สำหรับ Log
  • สิ่งที่ควรพิจารณาสำหรับใช้ Log Analytics workspaces
    - access control strategy - บังคับ data ต้องตาม Geo-Location ไหม เช่น ต้องอยู่ในไทยนะ (ยังไม่มี DC 55) หรือ ลด Cost ของ outbound data transfer charges สุดท้ายตาม Org Chart
    - deployment model options
    -> Centralized ( hub and spoke) รวมศูนย์ Data ใหญ่ ใช้ Admin Effort เพิ่ม แต่เห็นภาพรวม
    -> Decentralized - difficult to cross-correlate logs.
    -> Hybrid
    - access mode
    -> Workspace-context - เห็นหมด
    -> Resource-context เห็นตาม resource, resource group, or subscription
    - Azure RBAC and workspaces
    - scale and ingestion volume rate limit.

Design for Azure Workbooks and Azure insights

Design for Azure Data Explorer

  • Azure Data Explorer - Big Data แล้วแหละ unified big data analytics platform ที่เอา log + telemetry data มา diagnostics, monitoring reporting หรือจะ Analysis + ML ก็ได้
  • สิ่งที่ควรพิจารณาสำหรับใช้ Azure Data Explorer
    - เข้าใจ native capabilities in Azure Monitor
    - ไม่มีอะไรดีสุด Combine features Microsoft Sentinel / Azure Monitor with Azure Data Explorer to build a flexible and cost-optimized end-to-end monitoring
    - advantages of Azure Data Explorer ทีตัว Microsoft Sentinel + Azure Monitor ยังไม่ได้ทำสะดวกมี application trace logs / near-real-time analytics / role-based access control/ anomaly detection and forecasting / machine learning (ต่อยอดกับ Data Bricks หรือ Azure ML ก็ได้นะ)
    - long data retention in a cost-effective manner

Knowledge check: Design a solution to log and monitor Azure resources

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.