Ngân hàng đề — Microsoft Azure Developer

Tìm thấy 409 câu.

Câu 131 API Management
Using which channels can you create an API Management instance?
  1. A Portal only
  2. B CLI, PowerShell, Portal
  3. C Portal, ARM Template
  4. D CLI, PowerShell, Portal, Visual Studio Code, ARM Template
Xem giải thích

Đáp án

D — CLI, PowerShell, Portal, Visual Studio Code và ARM Template.

Vì sao đúng

⚠ Gần như mọi tài nguyên Azure đều tạo được qua nhiều kênh: | Kênh | Nội dung | |---|---| | ⚠ Azure Portal | ⚠ giao diện web | | ⚠ Azure CLI | ⚠ az apim create | | ⚠ PowerShell | ⚠ New-AzApiManagement | | ⚠ ARM template / Bicep | ⚠ hạ tầng dạng mã | | ⚠ Visual Studio Code | ⚠ có extension riêng cho APIM | | ⚠ REST API và SDK | |

⚠ Mọi kênh đều gọi vào
        ↓
⚠ Azure Resource Manager
        ↓
⚠ Cùng một kết quả

Vì sao các phương án khác sai

  • A (chỉ Portal), B (thiếu ARM và VS Code), C (thiếu CLI và PowerShell) — ⚠ đều LIỆT KÊ THIẾU.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ đây là dạng câu ⚠ "chọn danh sách đầy đủ nhất".

Chiến thuật Nội dung
⚠ Với dịch vụ Azure phổ biến, đáp án thường là danh sách DÀI NHẤT
⚠ Vì mọi thứ đều đi qua ARM
⚠ Kiểm tra xem có mục nào SAI rõ ràng không
⚠ Nếu không có mục sai ⚠ chọn danh sách đầy đủ nhất
⚠ Cảnh giác ⚠ danh sách chứa công cụ không tồn tại hoặc không liên quan

⚠ Extension VS Code cho Azure — đáng biết: | Extension | Việc | |---|---| | ⚠ Azure API Management | ⚠ tạo và quản lý APIM, sửa policy | | ⚠ Azure Functions | ⚠ tạo, chạy, triển khai Functions | | ⚠ Azure App Service | | | ⚠ Azure Resources | ⚠ duyệt mọi tài nguyên | | ⚠ Bicep | ⚠ gợi ý và kiểm tra cú pháp | | ⚠ Lợi ích | ⚠ làm việc với Azure mà không rời trình soạn thảo |

Từ khoá nhận diện:

"tạo tài nguyên bằng cách nào" → ⚠ thường là nhiều kênh "chỉ Portal" → ⚠ gần như luôn SAI "hạ tầng dạng mã" → ⚠ ARM, Bicep "trong trình soạn thảo" → ⚠ VS Code extension

⚠ API Management — lưu ý khi tạo Lưu ý
⚠ Bậc Developer, Basic, Standard, Premium, Consumption
⚠ Tạo instance mất RẤT LÂU ⚠ có thể 30-45 phút
⚠ Bậc Consumption tạo nhanh hơn nhiều
⚠ Bậc Premium có multi-region và VNet
⚠ Đừng ngạc nhiên ⚠ nếu lệnh tạo chạy rất lâu
⚠ Chọn bậc APIM Bậc
⚠ Developer ⚠ học và thử, KHÔNG SLA
⚠ Basic / Standard ⚠ sản xuất quy mô vừa
⚠ Premium ⚠ đa vùng, VNet, quy mô lớn
⚠ Consumption ⚠ serverless, trả theo lượt gọi

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Kênh nào phù hợp với quy trình của đội | | | Có nên dùng Bicep cho việc tạo lặp lại không | | | Bậc APIM có đáp ứng yêu cầu SLA không | |

Và điều đáng nhớ khi lần đầu tạo một instance API Management: nó mất tới bốn mươi lăm phút. Lệnh không treo, dịch vụ chỉ đơn giản là cần thời gian đó để dựng.

Câu 132 Containers

Which file format is the standard for documenting the configuration of Docker containers and is used by Docker Compose to create the image?

  1. A XML file
  2. B YAML file
  3. C JSON file
  4. D .config file
Xem giải thích

Đáp án

B — Tệp YAML.

Vì sao đúng

⚠ Docker Compose dùng tệp docker-compose.yml định dạng YAML:

⚠ services:
⚠   web:
⚠     image: nginx
⚠     ports:
⚠       - "80:80"
⚠   db:
⚠     image: postgres
⚠     environment:
⚠       POSTGRES_PASSWORD: example
Vì sao YAML Lý do
⚠ Dễ đọc cho con người
⚠ Biểu diễn cấu trúc lồng nhau gọn
⚠ Không có dấu ngoặc rườm rà như JSON
⚠ Hỗ trợ chú thích ⚠ JSON không có

Vì sao các phương án khác sai

  • C (JSON) — ⚠ Docker dùng JSON ở nơi khác: ⚠ ví dụ daemon.json; ⚠ nhưng Compose thì dùng YAML.

  • A (XML) và D (.config) — ⚠ không phải định dạng của hệ sinh thái Docker.

Ghi nhớ

⚠ Định dạng tệp trong hệ sinh thái container: | Tệp | Định dạng | |---|---| | ⚠ Dockerfile | ⚠ cú pháp riêng, không phải YAML | | ⚠ docker-compose.yml | ⚠ YAML | | ⚠ Kubernetes manifest | ⚠ YAML | | ⚠ Helm chart | ⚠ YAML với template | | ⚠ ACR Task | ⚠ YAML | | ⚠ ARM template | ⚠ JSON | | ⚠ Bicep | ⚠ cú pháp riêng | | ⚠ Thế giới container | ⚠ gần như hoàn toàn dùng YAML |

Từ khoá nhận diện:

"Docker Compose, Kubernetes, Helm" → ⚠ YAML "ARM template" → ⚠ JSON "Dockerfile" → ⚠ cú pháp riêng, không phải YAML "Bicep" → ⚠ cú pháp riêng

⚠ Cạm bẫy của YAML — thụt lề Cạm bẫy
⚠ YAML dùng THỤT LỀ để biểu diễn cấu trúc
⚠ KHÔNG được dùng tab, chỉ dùng dấu cách
⚠ Thụt lề sai một dấu cách là sai cả tệp
⚠ Lỗi rất khó thấy bằng mắt ⚠ nên dùng trình soạn thảo có kiểm tra YAML
⚠ Docker Compose trên Azure Nội dung
⚠ App Service for Containers hỗ trợ Compose nhiều container ⚠ tính năng có hạn chế
⚠ Container Instances hỗ trợ container group ⚠ dùng YAML riêng
⚠ Với nhiều dịch vụ ⚠ Container Apps hoặc AKS phù hợp hơn
⚠ Compose ⚠ chủ yếu là công cụ phát triển cục bộ
⚠ Dockerfile so với Compose Phân biệt
⚠ Dockerfile: cách XÂY một ảnh
⚠ Compose: cách CHẠY nhiều container cùng nhau
⚠ Hai việc khác nhau ⚠ thường dùng cùng nhau

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Tệp YAML có dùng tab không | ⚠ lỗi phổ biến nhất | | Compose dùng cho dev hay production | | | Có nên chuyển sang Container Apps không | |

Và lỗi phổ biến nhất khi làm việc với bất kỳ tệp YAML nào, từ Docker Compose tới Kubernetes: dùng ký tự tab thay vì dấu cách. Nhìn thì giống hệt nhau, mà trình phân tích từ chối cả tệp.

Câu 133 Container Registry

Your Azure Container Registry is getting quite big. You have to find a way to reduce the size of it by removing unused images. You decided to delete any untagged images after 30 days. Which Azure CLI command is used automatically remove untagged images? Fill in the blank.  az acr config ________ update --registry myregistry --status enabled --days 30 --type UntaggedManifests

  1. A untagged
  2. B delete
  3. C retention
  4. D timeout
Xem giải thích

Đáp án

C — retention

Vì sao đúng

⚠ Lệnh đầy đủ là az acr config retention update:

⚠ az acr config retention update \
⚠   --registry myacr \
⚠   --status enabled \
⚠   --days 30 \
⚠   --type UntaggedManifests
        ↓
⚠ Ảnh CHƯA GẮN THẺ quá 30 ngày sẽ tự xoá
Vì sao có ảnh chưa gắn thẻ Lý do
⚠ Đẩy ảnh mới với CÙNG một thẻ ⚠ ảnh cũ mất thẻ nhưng vẫn tồn tại
⚠ Tích tụ rất nhanh trong CI/CD
⚠ Chiếm dung lượng mà không ai biết
⚠ Đây là ⚠ nguyên nhân số một khiến registry phình to

Vì sao các phương án khác sai

  • B (delete) — ⚠ xoá THỦ CÔNG một ảnh cụ thể, không tự động.

  • A (untagged) và D (timeout) — ⚠ không phải lệnh con hợp lệ.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ câu này ⚠ giải quyết vấn đề đã nêu ở #21420.

Câu Hỏi gì Khoá
⚠ #21420 ⚠ namespace trong ACR ⚠ registry/namespace/tên
⚠ #21467 ⚠ lệnh thuộc ACR Tasks ⚠ az acr build
⚠ #21536 (câu này) ⚠ tự xoá ảnh chưa gắn thẻ ⚠ retention policy
⚠ Ba câu ⚠ vẽ trọn việc quản lý vòng đời ảnh

⚠ Ba cách dọn dẹp ACR: | Cách | Nội dung | |---|---| | ⚠ Retention policy | ⚠ tự xoá ảnh chưa gắn thẻ — đề này | | ⚠ acr purge task | ⚠ xoá theo bộ lọc và tuổi, kể cả ảnh CÓ thẻ | | ⚠ az acr repository delete | ⚠ xoá thủ công | | ⚠ Retention policy | ⚠ có ở bậc Premium | | ⚠ acr purge | ⚠ chạy được như task theo lịch |

Từ khoá nhận diện:

"tự xoá ảnh chưa gắn thẻ" → ⚠ retention policy "xoá theo tuổi và bộ lọc" → ⚠ acr purge task "xoá một ảnh cụ thể" → ⚠ az acr repository delete "registry phình to" → ⚠ thường do ảnh chưa gắn thẻ

⚠ Vì sao ảnh cũ tích tụ nhanh trong CI/CD Lý do
⚠ Mỗi lần build đẩy một ảnh mới
⚠ Nếu dùng thẻ latest thì ảnh cũ mất thẻ
⚠ Ảnh mất thẻ vẫn chiếm dung lượng
⚠ Không ai nhìn thấy chúng trên giao diện
⚠ Sau vài tháng ⚠ registry có thể phình lên hàng trăm GB
⚠ Cẩn thận khi dọn dẹp Cẩn thận
⚠ Ảnh chưa gắn thẻ có thể vẫn ĐANG CHẠY ⚠ pod tham chiếu theo digest
⚠ Xoá là container không khởi động lại được
⚠ Nên ⚠ đặt thời hạn đủ dài, và kiểm tra trước khi bật
⚠ An toàn hơn ⚠ chạy acr purge ở chế độ dry-run trước

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Registry đang chiếm bao nhiêu dung lượng | | | Có bao nhiêu ảnh chưa gắn thẻ | | | Có ảnh nào đang được tham chiếu theo digest không | |

Và nguồn gốc âm thầm khiến chi phí registry container tăng đều mà không ai để ý: ảnh mất thẻ sau mỗi lần build đè lên cùng một tag. Chúng không hiện trên giao diện nhưng vẫn tính tiền lưu trữ.

Câu 134 Azure AD
Which of the following two-factor authentication verification methods are available in Azure AD?
  1. A Text message
  2. B Email, SMS, Security Questions
  3. C Authenticator App, text message, email, phone call
  4. D Authenticator app, text message, phone call, security key
Xem giải thích

Đáp án

D — Ứng dụng Authenticator, tin nhắn văn bản, cuộc gọi điện thoại và security key.

Vì sao đúng

⚠ Entra ID hỗ trợ nhiều phương thức xác thực bổ sung: | Phương thức | Mức bảo mật | |---|---| | ⚠ Microsoft Authenticator | ⚠ cao — khuyến nghị | | ⚠ FIDO2 security key | ⚠ CAO NHẤT — chống phishing | | ⚠ Windows Hello for Business | ⚠ rất cao | | ⚠ Passkey | ⚠ rất cao | | ⚠ Chứng chỉ | ⚠ cao | | ⚠ OATH token | ⚠ trung bình | | ⚠ Tin nhắn SMS | ⚠ THẤP — dễ bị SIM swap | | ⚠ Gọi điện | ⚠ thấp | | ⚠ KHÔNG hỗ trợ | ⚠ EMAIL làm phương thức MFA đăng nhập |

Vì sao các phương án khác sai

  • C (có EMAIL) — ⚠ bẫy chính: ⚠ email ⚠ chỉ dùng để KHÔI PHỤC mật khẩu (SSPR), ⚠ không phải phương thức MFA khi đăng nhập.

  • B (email, SMS, câu hỏi bảo mật) — ⚠ câu hỏi bảo mật cũng chỉ dùng cho SSPR.

  • A (chỉ tin nhắn) — ⚠ quá hẹp.

Ghi nhớ

⚠ Phân biệt MFA và SSPR — điểm mấu chốt: | Mục đích | Phương thức được phép | |---|---| | ⚠ MFA khi ĐĂNG NHẬP | ⚠ app, SMS, gọi điện, security key, chứng chỉ | | ⚠ SSPR (tự đặt lại mật khẩu) | ⚠ thêm EMAIL và CÂU HỎI BẢO MẬT | | ⚠ Vì sao khác nhau | ⚠ email không đủ mạnh làm yếu tố thứ hai khi đăng nhập | | ⚠ Đây là | ⚠ điểm phân biệt mà đề đang kiểm tra |

Từ khoá nhận diện:

"MFA đăng nhập" → ⚠ app, SMS, gọi điện, security key "đặt lại mật khẩu" → ⚠ SSPR, có thêm email và câu hỏi "chống phishing" → ⚠ FIDO2, Windows Hello, passkey "kém an toàn nhất" → ⚠ SMS

⚠ Vì sao SMS là phương thức yếu Lý do
⚠ Tấn công SIM swap ⚠ chiếm số điện thoại
⚠ Chặn tin nhắn ở tầng mạng
⚠ KHÔNG chống được phishing thời gian thực
⚠ Microsoft khuyến nghị ⚠ chuyển sang Authenticator hoặc FIDO2
⚠ Vẫn tốt hơn nhiều ⚠ so với không có MFA
⚠ Number matching — cải tiến quan trọng Nội dung
⚠ Trước: chỉ bấm "Approve" ⚠ dễ bấm nhầm khi bị spam thông báo
⚠ Nay: phải NHẬP SỐ hiện trên màn hình đăng nhập
⚠ Chống được tấn công MFA fatigue
⚠ Nay ⚠ bật mặc định cho Microsoft Authenticator
⚠ Passwordless — hướng đi hiện nay Nội dung
⚠ Bỏ hẳn mật khẩu, dùng passkey hoặc Windows Hello
⚠ Chống phishing tốt nhất
⚠ Trải nghiệm người dùng tốt hơn
⚠ Mật khẩu ⚠ là mắt xích yếu nhất, kể cả khi có MFA

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Còn bao nhiêu người chỉ dùng SMS | | | Number matching đã bật chưa | | | Có lộ trình chuyển sang passwordless không | |

Và phân biệt mà câu hỏi này thật sự kiểm tra: email và câu hỏi bảo mật dùng được để KHÔI PHỤC mật khẩu, nhưng không đủ mạnh để làm yếu tố thứ hai khi đăng nhập.

Câu 135 Monitoring and logging

You are developing an Azure application that uses Azure Application Insights to monitor performance and usage. You want to ensure that you can effectively troubleshoot issues related to the application's performance. Which of the following features of Azure Application Insights can you use to identify slow requests and dependencies in your application?

  1. A

    Application Map

  2. B

    Performance Counters

  3. C

    Analytics Query

  4. D

    Live Metrics Stream

Xem giải thích

Đáp án

D — Live Metrics Stream

Vì sao đúng

Live Metrics Stream hiển thị số liệu theo thời gian thực với độ trễ dưới một giây: số yêu cầu, tỷ lệ lỗi, thời gian phản hồi, mức dùng tài nguyên — và cho lọc để chỉ xem những yêu cầu thoả điều kiện. Đây là công cụ dùng khi bạn vừa phát hành và muốn thấy ngay tác động, hoặc khi đang có sự cố và cần nhìn hệ thống ngay lúc này.

Vì sao các phương án khác sai

  • A. Application Map — vẽ sơ đồ phụ thuộc giữa các thành phần và chỉ ra nút thắt, nhưng dựa trên dữ liệu đã tổng hợp chứ không phải luồng trực tiếp.
  • C. Analytics Query — truy vấn KQL trên dữ liệu đã lưu; rất mạnh để điều tra sau, nhưng có độ trễ nạp dữ liệu.
  • B. Performance Counters — số đo hạ tầng, phạm vi hẹp hơn nhiều.
Câu 136 App Service
You are developer encountering an issue with your Azure App Service web app. The app appears to be failing to connect to the database. You notice that the connection string appears both in the <connectionStrings> section of web.config AND ALSO appears in the Connection Strings tab of the App Service configuration. Which database connection string is being used by the application in production?
  1. A The Connection String in the web.config
  2. B There's no way to know why connection string will be chosen
  3. C The Connection Strings tab of the App Service configuration
Xem giải thích

Đáp án

C — Tab Connection Strings trong cấu hình của App Service.

Vì sao đúng

⚠ Cấu hình trên Azure GHI ĐÈ cấu hình trong tệp của ứng dụng:

⚠ web.config có <connectionStrings>
        ↓
⚠ App Service Configuration cũng có
        ↓
⚠ Khi chạy, App Service TIÊM giá trị của mình vào
        ↓
⚠ Giá trị trên AZURE THẮNG
Thứ tự ưu tiên Nội dung
⚠ 1. App Service Configuration ⚠ cao nhất
⚠ 2. Biến môi trường
⚠ 3. Tệp cấu hình của ứng dụng ⚠ thấp nhất
⚠ Nguyên tắc ⚠ cấu hình bên ngoài luôn thắng cấu hình trong mã

Vì sao các phương án khác sai

  • A (chuỗi trong web.config) — ⚠ SAI: ⚠ nó bị ghi đè.

  • B (không có cách nào biết được) — ⚠ SAI: ⚠ quy tắc rất rõ ràng và có tài liệu.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ đây là một trong những ⚠ nguyên nhân gỡ lỗi mất thời gian nhất trong thực tế.

Triệu chứng Nguyên nhân
⚠ Sửa web.config mà không có tác dụng gì ⚠ Azure đang ghi đè
⚠ Chạy cục bộ thì đúng, lên Azure thì sai ⚠ cấu hình khác nhau
⚠ Không hiểu app đang nối tới CSDL nào ⚠ xem Configuration trên Portal
⚠ Cách kiểm tra ⚠ Kudu → Environment để xem giá trị THẬT

⚠ Connection Strings và Application Settings — khác biệt: | Điểm | App Settings | Connection Strings | |---|---|---| | ⚠ Tiêm vào | ⚠ biến môi trường | ⚠ biến môi trường có TIỀN TỐ theo loại | | ⚠ Tiền tố | ⚠ không | ⚠ SQLAZURECONNSTR_, MYSQLCONNSTR_... | | ⚠ .NET đọc được qua | ⚠ cấu hình thường | ⚠ ConnectionStrings section | | ⚠ Với ứng dụng KHÔNG phải .NET | ⚠ cả hai đều chỉ là biến môi trường |

Từ khoá nhận diện:

"cấu hình trên Azure và trong mã cùng có" → ⚠ Azure thắng "sửa tệp mà không có tác dụng" → ⚠ bị ghi đè "xem giá trị thật đang chạy" → ⚠ Kudu Environment "secret không nên ở đâu" → ⚠ cả hai chỗ — dùng Key Vault reference

⚠ Deployment slot setting — cạm bẫy liên quan Cạm bẫy
⚠ Mặc định setting ĐI THEO khi swap
⚠ Chuỗi kết nối CSDL nên đánh dấu "slot setting"
⚠ Không đánh dấu thì swap sẽ mang cấu hình staging lên production
⚠ Sự cố kinh điển ⚠ production bỗng nối vào CSDL test sau khi swap
⚠ Thực hành tốt Thực hành
⚠ KHÔNG để chuỗi kết nối trong tệp cấu hình đưa lên Git
⚠ Dùng Key Vault reference
⚠ Đánh dấu slot setting cho thứ khác nhau giữa các slot
⚠ Dùng managed identity để bỏ hẳn mật khẩu

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Giá trị thật đang chạy là gì | ⚠ kiểm tra ở Kudu Environment | | Chuỗi kết nối có đánh dấu slot setting chưa | | | Có secret nào trong tệp cấu hình đưa lên Git không | |

Và cách nhanh nhất để chấm dứt tranh cãi về việc ứng dụng đang dùng cấu hình nào: mở Kudu và xem biến môi trường thật sự đang có giá trị gì. Mọi suy đoán từ tệp cấu hình đều có thể sai.

Câu 137 Non-relational DB
Which CosmosDB API format works best with key-value data?
  1. A Table API
  2. B MongoDB API
  3. C Gremlin API
  4. D Cassandra API
Xem giải thích

Đáp án

A — Table API.

Vì sao đúng

⚠ Mỗi API của Cosmos DB ứng với một mô hình dữ liệu: | API | Mô hình | |---|---| | ⚠ Table API | ⚠ KHOÁ-GIÁ TRỊ | | ⚠ MongoDB API | ⚠ tài liệu | | ⚠ Cassandra API | ⚠ cột rộng | | ⚠ Gremlin API | ⚠ đồ thị | | ⚠ NoSQL (Core SQL) | ⚠ tài liệu — API gốc |

⚠ PartitionKey + RowKey → Thực thể
        ↓
⚠ Tra theo khoá: rất nhanh
⚠ Truy vấn theo trường khác: kém

Vì sao các phương án khác sai

  • B (MongoDB API) — ⚠ mô hình TÀI LIỆU.

  • D (Cassandra API) — ⚠ cột rộng.

  • C (Gremlin API) — ⚠ đồ thị.

Ghi nhớ

⚠ Ghi nhớ về chất lượng câu hỏi: ⚠ câu này ⚠ TRÙNG với #19539 ở lô 166, thứ tự phương án ⚠ bị xáo.

Câu Chứng chỉ Vị trí đáp án
⚠ #19539 ⚠ Data Fundamentals ⚠ C — Table API
⚠ #21540 (câu này) ⚠ Azure Developer ⚠ A — Table API
⚠ Đây là câu trùng thứ NĂM ⚠ và cuối cùng của lô này

⚠ Tổng kết năm câu trùng của lô 169: | Câu | Trùng với | Chữ cái đổi | |---|---|---| | ⚠ #21508 (soft delete) | ⚠ #19505 | ⚠ D → B | | ⚠ #21510 (LRS 3 bản) | ⚠ #19617 | ⚠ B → A | | ⚠ #21511 (ARM template) | ⚠ #19630 | ⚠ A → B | | ⚠ #21533 (chi phí Redis) | ⚠ #19504 | ⚠ A → B | | ⚠ #21540 (Table API) | ⚠ #19539 | ⚠ C → A | | ⚠ Kết luận | ⚠ TẤT CẢ NĂM câu đều đổi chữ cái |

⚠ Năm API Cosmos DB — bảng chốt: | API | Mô hình | Tên mới | |---|---|---| | ⚠ Core (SQL) | ⚠ tài liệu | ⚠ for NoSQL | | ⚠ MongoDB | ⚠ tài liệu | ⚠ for MongoDB | | ⚠ Cassandra | ⚠ cột rộng | ⚠ for Apache Cassandra | | ⚠ Gremlin | ⚠ đồ thị | ⚠ for Apache Gremlin | | ⚠ Table | ⚠ khoá-giá trị | ⚠ for Table |

Từ khoá nhận diện:

"khoá-giá trị" → ⚠ Table API "JSON, truy vấn nhiều trường" → ⚠ NoSQL "đồ thị, quan hệ" → ⚠ Gremlin "cột rộng" → ⚠ Cassandra

⚠ Table API và Table Storage — nhắc lại So sánh
⚠ Cùng API lập trình
⚠ Table Storage: RẺ hơn nhiều
⚠ Cosmos Table API: độ trễ cam kết, toàn cầu, chỉ mục đầy đủ
⚠ Bắt đầu bằng ⚠ Table Storage, nâng cấp khi thật sự cần

Ba việc kiểm chứng: | Việc | Cách | |---|---| | Mô hình dữ liệu thật sự là gì | | | Table Storage đã đủ chưa | | | Có nhầm chữ cái từ lần gặp trước không | |

Và bài học rõ ràng nhất của lô này, với năm câu trùng và cả năm đều đổi chữ cái: học thuộc vị trí đáp án là cách ôn thi chắc chắn thất bại. Chỉ có hiểu nội dung mới bền.

Câu 138 Authentication and Authorization

You are developing an Azure web application that requires user authentication using Entra ID (formerly Azure AD). You need to ensure that only users from a specific group within your Entra ID tenant can access a particular feature of the application. Which of the following approaches should you implement to achieve this requirement?

  1. A

    Configure app registration in Entra ID to allow only specific users to authenticate.

  2. B

    Use Entra Conditional Access policies to restrict access based on group membership.

  3. C

    Utilize Microsoft Entra External ID to manage user authentication and create custom user flows for group-based access.

  4. D

    Implement role-based access control (RBAC) in your application to check the user's group membership at runtime.

Xem giải thích

Đáp án

D — Cài đặt kiểm soát truy cập theo vai trong chính ứng dụng

Vì sao đúng

Entra ID lo phần xác thực — chứng minh người dùng là ai — rồi phát ra token chứa các claim, trong đó có vai hoặc nhóm mà người đó thuộc về. Nhưng phần uỷ quyền — quyết định vai đó được làm gì trong ứng dụng của bạn — thì Entra ID không biết, vì nó không hiểu logic nghiệp vụ.

Vì vậy ứng dụng phải đọc claim trong token và kiểm tra trước khi cho truy cập từng tính năng.

Vì sao các phương án khác sai

  • B. Conditional Access theo nhóm — kiểm soát điều kiện đăng nhập (thiết bị, vị trí, xác thực đa yếu tố), không phân quyền tới từng tài nguyên bên trong ứng dụng.
  • A. Hạn chế người được xác thực trong app registration — chặn ai đăng nhập được vào ứng dụng nói chung, nhưng không phân biệt được quyền giữa những người đã vào.
  • C. Entra External ID — dành cho danh tính khách hàng bên ngoài, không phải người dùng của tổ chức.
Câu 139 Containers

You have deployed an Azure Container Instance (ACI) that requires access to files stored in an Azure Storage Account. What is the best way to set this up to ensure secure and efficient access?

  1. A

    Create a Shared Access Signature (SAS) token and provide it to the ACI as an environment variable.

  2. B

    Configure a Managed Identity for the ACI and assign it the necessary permissions to the storage account.

  3. C

    Use Azure CLI commands to copy files from the storage account to the ACI during the startup process.

  4. D

    Use the storage account's connection string directly in the ACI's environment variables.

Xem giải thích

Đáp án

B — Cấu hình managed identity cho ACI và gán quyền cần thiết

Vì sao đúng

Managed identity là cách truy cập an toàn nhất vì không có bí mật nào tồn tại: Azure cấp cho container một danh tính, nó lấy token từ nền tảng, và bạn gán cho danh tính đó đúng vai cần trên tài khoản lưu trữ. Không có gì để rò rỉ, không có gì hết hạn, không có gì phải xoay vòng.

Vì sao các phương án khác sai

  • A. Truyền SAS token vào biến môi trường — token có thời hạn, nên phải có cơ chế tạo lại; và biến môi trường của container đọc được từ nhiều nơi.
  • D. Đưa chuỗi kết nối vào biến môi trường — tệ hơn nữa: chuỗi kết nối chứa khoá tài khoản, tức là toàn quyền trên toàn bộ tài khoản lưu trữ.
  • C. Chép tệp vào container lúc khởi động bằng Azure CLI — làm phình thời gian khởi động, và dữ liệu trở thành bản sao tĩnh không cập nhật.
Câu 140 Cosmos DB

You have a web app that runs globally and utilizes a Cosmos DB database replicated across five different regions. It is crucial for the application to display the same data in every location within a maximum latency of 5 seconds. Which consistency level should you choose to achieve this requirement?

  1. A

    Consistent Prefix

  2. B

    Bounded Staleness

  3. C

    Strong Consistency

  4. D

    Eventual Consistency

Xem giải thích

Đáp án

B — Bounded Staleness

Vì sao đúng

Từ khoá quyết định nằm ở cuối đề: "trong độ trễ tối đa 5 giây". Bounded Staleness là mức nhất quán duy nhất cho bạn khai một cận trên cụ thể cho độ lệch — theo khoảng thời gian hoặc theo số phiên bản. Dữ liệu ở các khu vực có thể chậm hơn bản chính, nhưng không bao giờ chậm quá mức bạn đặt.

Đây chính là điểm cân bằng: chặt hơn Eventual vì có cam kết đo được, nhưng không phải trả giá đồng bộ toàn cầu như Strong.

Vì sao các phương án khác sai

  • C. Strong — bảo đảm mạnh hơn mức cần, và trả giá bằng độ trễ ghi cao hơn hẳn; nó cũng không dùng được với ghi đa vùng.
  • D. Eventual và A. Consistent Prefix — đều không có cận trên nào về thời gian trễ, nên không đáp ứng được yêu cầu "tối đa 5 giây".

So sánh với câu cùng chủ đề

Bộ đề này có một câu gần như giống hệt nhưng yêu cầu là "nhất thiết phải giống nhau ở mọi nơi, bất kể độ trễ" — và đáp án ở đó là Strong. Điểm phân biệt nằm ở chỗ đề có nêu một ngưỡng thời gian cụ thể hay không.