Ngân hàng đề — Google Cloud Associate Cloud Engineer
Tìm thấy 449 câu.
- A Set autoscaling to On, set the minimum number of instances to 1, and then set the maximum number of instances to 1.
- B Set autoscaling to Off, set the minimum number of instances to 1, and then set the maximum number of instances to 1.
- C Set autoscaling to On, set the minimum number of instances to 1, and then set the maximum number of instances to 2.
- D Set autoscaling to Off, set the minimum number of instances to 1, and then set the maximum number of instances to 2.
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi tập trung vào việc triển khai ứng dụng lên Compute Engine VM trong một Managed Instance Group (MIG) trên Google Cloud Platform (GCP). Yêu cầu chính:
- Ứng dụng phải luôn chạy (running at all times) – nghĩa là hệ thống cần tự động khôi phục nếu instance bị lỗi (như crash hoặc unhealthy).
- Chỉ chạy đúng 1 instance VM duy nhất cho mỗi GCP project (single instance per project) – không được scale lên nhiều hơn.
🛠️ Bối cảnh kỹ thuật: MIG là nhóm instance được quản lý tự động, hỗ trợ autoscaling (tự động điều chỉnh số lượng dựa trên metrics như CPU) và autohealing (tự sửa chữa instance lỗi qua health checks). Để đảm bảo luôn đúng 1 instance, cần cấu hình autoscaler sao cho minimum = maximum = 1, giúp MIG duy trì chính xác 1 instance và tự động thay thế nếu lỗi (dựa trên phiên bản GCP mới nhất đến 2026, autoscaler v2 hỗ trợ scaling chính xác hơn với predictive scaling).
📘 Nguồn tham khảo:
- Cloud Compute Engine: Managed Instance Groups
- Autoscaler for MIG (cập nhật 2024-2026, hỗ trợ fixed-size scaling với min=max).
✅ Đáp án đúng
Set autoscaling to On, set the minimum number of instances to 1, and then set the maximum number of instances to 1.
Lý do chọn đáp án này 🏆:
- Bật autoscaling On với min=1, max=1 tạo ra một MIG fixed-size (kích thước cố định 1 instance), nhưng vẫn tận dụng autoscaler để tự động heal (khôi phục) nếu instance bị lỗi (dựa trên CPU/memory metrics hoặc health checks).
- Đảm bảo luôn chạy 1 instance (không dưới 1, không vượt 1), phù hợp hoàn hảo với yêu cầu "running at all times" và "only a single instance".
- Trong GCP 2026, autoscaler tự động recreate instance mới nếu instance cũ unhealthy, đảm bảo high availability mà không scale thừa.
🔍 Giải thích chi tiết tất cả các phương án
Dưới đây là phân tích từng lựa chọn giữ nguyên văn bản gốc tiếng Anh, đánh dấu ✅ đúng hoặc ❌ sai, kèm lý do bằng tiếng Việt:
-
Set autoscaling to On, set the minimum number of instances to 1, and then set the maximum number of instances to 1.
✅ Đúng – Như đã giải thích ở trên, cấu hình này tạo MIG fixed-size với autoscaling, đảm bảo chính xác 1 instance luôn chạy, tự heal tự động. Hoàn hảo cho yêu cầu! -
Set autoscaling to Off, set the minimum number of instances to 1, and then set the maximum number of instances to 1.
❌ Sai – Khi autoscaling Off, MIG là fixed-size (chỉ set "number of instances" = 1), không có khái niệm min/max. Cấu hình này không hợp lệ về thuật ngữ và không tận dụng autoscaler để heal tự động (chỉ dựa autohealing cơ bản, nhưng không đảm bảo "at all times" mạnh mẽ bằng autoscaler). MIG có thể down nếu instance lỗi mà không recreate kịp. -
Set autoscaling to On, set the minimum number of instances to 1, and then set the maximum number of instances to 2.
❌ Sai – Max=2 cho phép MIG scale lên 2 instances nếu load cao (CPU > threshold), vi phạm yêu cầu "only a single instance". Dù min=1 đảm bảo ít nhất 1, nhưng có nguy cơ chạy thừa 1 instance. -
Set autoscaling to Off, set the minimum number of instances to 1, and then set the maximum number of instances to 2.
❌ Sai – Kết hợp Off (không min/max hợp lệ) và max=2 (không áp dụng), MIG chỉ fixed-size=1 (bỏ qua min/max). Không heal mạnh mẽ và thuật ngữ sai, không đáp ứng "always running" hoặc "single instance" một cách chính xác.
🧠 Kết luận: Cấu hình đúng tận dụng autoscaler fixed-size là best practice cho MIG trên GCP, giúp ứng dụng HA (high availability) với đúng 1 instance! Nếu thi Associate Cloud Engineer, nhớ ưu tiên autoscaling cho resilience. 🚀
- A Run gcloud iam roles list. Review the output section.
- B Run gcloud iam service-accounts list. Review the output section.
- C Navigate to the project and then to the IAM section in the GCP Console. Review the members and roles.
- D Navigate to the project and then to the Roles section in the GCP Console. Review the roles and status.
Xem giải thích
🧩 Phân tích chi tiết câu hỏi
Câu hỏi yêu cầu xác minh IAM users (người dùng IAM) và roles (vai trò) được gán trong một dự án GCP có tên my-project.
✅ Mục tiêu chính: Kiểm tra danh sách các thành viên (members, bao gồm users, groups, service accounts) và các vai trò (roles) đã được gán cho họ trong dự án cụ thể. Đây là tính năng cốt lõi của Google Cloud IAM (Identity and Access Management), giúp quản trị viên đảm bảo quyền truy cập đúng đắn.
🛠️ Ngữ cảnh: IAM trong GCP quản lý quyền truy cập theo nguyên tắc least privilege. Bạn cần xem bindings (liên kết giữa members và roles) cho dự án my-project, không chỉ roles chung hay service accounts riêng lẻ.
📘 Kiến thức cập nhật (2026): Theo tài liệu GCP IAM mới nhất (phiên bản Cloud IAM v2), Console là cách trực quan nhất để verify assignments, hỗ trợ lọc, tìm kiếm và export dữ liệu (không thay đổi từ 2023-2026).
Nguồn tham khảo:
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Navigate to the project and then to the IAM section in the GCP Console. Review the members and roles.
Lý do:
🟢 Phương án này trực tiếp dẫn đến IAM & Admin > IAM trong GCP Console của dự án my-project. Tại đây, bạn sẽ thấy bảng Members (danh sách users, groups, service accounts) kèm Roles được gán chính xác cho từng member. Đây là cách chuẩn và dễ sử dụng nhất để verify assignments, hỗ trợ xem policy bindings đầy đủ, lọc theo role/user, và cập nhật real-time. Không cần lệnh CLI phức tạp, phù hợp với Associate Cloud Engineer exam.
📋 Giải thích tất cả các phương án
Dưới đây là phân tích từng lựa chọn một cách chi tiết, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi phương án được đánh giá đúng/sai với lý do cụ thể dựa trên GCP IAM.
-
❌ [SAI] Run gcloud iam roles list. Review the output section.
Giải thích: Lệnhgcloud iam roles listchỉ liệt kê danh sách các predefined/custom roles có sẵn trong dự án (như roles/viewer, roles/editor), không hiển thị users/roles đã được gán (assignments/bindings). Output chỉ có tên role, title, description, không liên quan đến members cụ thể củamy-project. Sai vì không verify được assignments thực tế. -
❌ [SAI] Run gcloud iam service-accounts list. Review the output section.
Giải thích: Lệnhgcloud iam service-accounts listchỉ liệt kê service accounts trong dự án (như tên, email), không hiển thị users thông thường hay roles được gán cho bất kỳ member nào. Output tập trung vào SAs thôi, bỏ qua IAM users/groups và bindings. Sai vì phạm vi quá hẹp, không đáp ứng yêu cầu verify đầy đủ. -
✅ [ĐÚNG] Navigate to the project and then to the IAM section in the GCP Console. Review the members and roles.
Giải thích: Như đã nêu ở phần đáp án đúng, đây là cách chính xác và trực quan nhất. Vào dự ánmy-project> IAM & Admin > IAM, bạn xem được Members column (users/roles/groups/SAs) và Roles column (bindings chi tiết). Hỗ trợ audit, export CSV, phù hợp best practice GCP. -
❌ [SAI] Navigate to the project and then to the Roles section in the GCP Console. Review the roles and status.
Giải thích: Phần IAM & Admin > Roles chỉ hiển thị danh sách roles (predefined/custom) với status (enabled/disabled), không liệt kê members hay assignments. Nó dùng để quản lý định nghĩa role, không phải verify ai được gán role nào trongmy-project. Sai vì nhầm lẫn giữa role definitions và policy bindings.
💡 Lời khuyên thực hành: Để verify qua CLI đúng cách (nâng cao), dùng gcloud projects get-iam-policy my-project thay vì các lệnh trên. Luôn ưu tiên Console cho verification nhanh! 🚀
- A Verify that you are Project Billing Manager for the GCP project. Update the existing project to link it to the existing billing account.
- B Verify that you are Project Billing Manager for the GCP project. Create a new billing account and link the new billing account to the existing project.
- C Verify that you are Billing Administrator for the billing account. Create a new project and link the new project to the existing billing account.
- D Verify that you are Billing Administrator for the billing account. Update the existing project to link it to the existing billing account.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi yêu cầu: Bạn cần tạo một tài khoản thanh toán (billing account) mới và sau đó liên kết nó với một dự án Google Cloud Platform (GCP) hiện có. Bạn nên làm gì?
📘 Giải thích rõ ràng:
- Trong GCP, mỗi dự án cần được liên kết với một tài khoản thanh toán để sử dụng các dịch vụ và chịu chi phí.
- Nhiệm vụ cụ thể là tạo billing account mới (không sử dụng billing account cũ) và liên kết nó với project hiện có (không tạo project mới).
- Quy trình liên quan đến quyền truy cập (roles): Project Billing Manager (cho project) hoặc Billing Account Administrator (cho billing account).
- Theo tài liệu GCP mới nhất (cập nhật đến 2024-2026, không có thay đổi lớn về billing roles từ Google Cloud Billing docs), bạn phải có quyền phù hợp trên project để thay đổi billing account của nó.
🛠️ Quy trình đúng: Kiểm tra quyền Project Billing Manager trên project → Tạo billing account mới → Liên kết project với billing account mới.
Nguồn tham khảo:
- Google Cloud Billing: Link a project to a billing account
- IAM roles for billing (xác nhận roles không thay đổi đến 2026).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Verify that you are Project Billing Manager for the GCP project. Create a new billing account and link the new billing account to the existing project.
Lý do:
- Bạn cần quyền Project Billing Manager (roles/billing.projectManager) trên project hiện có để thay đổi billing account của nó.
- Sau đó, tạo billing account mới và liên kết trực tiếp project với billing account mới – đúng quy trình GCP.
- Điều này khớp chính xác yêu cầu: tạo mới + liên kết với project hiện có. ✅
📋 Giải thích tất cả các phương án (đúng/sai)
-
Phương án 1: Verify that you are Project Billing Manager for the GCP project. Update the existing project to link it to the existing billing account.
❌ Sai vì: Phương án này nói "link it to the existing billing account" (liên kết với billing account hiện có), nhưng câu hỏi yêu cầu tạo billing account mới. Quyền Project Billing Manager đúng, nhưng hành động không khớp (không tạo mới). -
Phương án 2: Verify that you are Project Billing Manager for the GCP project. Create a new billing account and link the new billing account to the existing project.
✅ Đúng vì: Quyền Project Billing Manager cho phép thay đổi billing trên project hiện có. Tạo billing account mới và liên kết chính xác theo docs GCP – hoàn hảo khớp yêu cầu! -
Phương án 3: Verify that you are Billing Administrator for the billing account. Create a new project and link the new project to the existing billing account.
❌ Sai vì: Quyền Billing Administrator (roles/billing.admin) chỉ quản lý billing account, không cho phép thay đổi billing của project hiện có. Hơn nữa, nó tạo project mới và liên kết với billing account hiện có – trái ngược hoàn toàn (cần project hiện có + billing mới). -
Phương án 4: Verify that you are Billing Administrator for the billing account. Update the existing project to link it to the existing billing account.
❌ Sai vì: Billing Administrator không có quyền cập nhật billing cho project (chỉ quản lý billing account). Ngoài ra, liên kết với existing billing account (hiện có), không tạo mới.
🧩 Tóm tắt: Chỉ phương án 2 đáp ứng đầy đủ quyền hạn + hành động chính xác theo best practices GCP!
- A Download the private key from the service account, and add it to each VMs custom metadata.
- B Download the private key from the service account, and add the private key to each VM's SSH keys.
- C Grant the service account the IAM Role of Compute Storage Admin in the project called proj-vm.
- D When creating the VMs, set the service account's API scope for Compute Engine to read/write.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi này thuộc chủ đề Identity and Access Management (IAM) và Compute Engine trên Google Cloud Platform (GCP).
- Tình huống: Bạn có một project tên proj-sa dùng để quản lý tất cả service accounts. Bạn muốn sử dụng một service account từ project này để lấy snapshots (ảnh chụp nhanh) của các VMs (Virtual Machines) đang chạy trong project khác tên proj-vm.
- Mục tiêu: Cần cấp quyền cho service account (từ proj-sa) truy cập và thực hiện hành động snapshot trên VMs ở proj-vm, mà không làm thay đổi cấu hình của chính các VMs đó.
- Thách thức chính: Service account thuộc project khác, nên cần cross-project IAM permissions để tránh vi phạm nguyên tắc least privilege và bảo mật. GCP khuyến khích sử dụng IAM roles thay vì chia sẻ private keys (rủi ro cao).
- Phiên bản kiến thức: Dựa trên tài liệu GCP cập nhật đến năm 2026 (IAM roles v.v1.0+, Compute Engine API scope Read/Write không thay đổi cơ bản).
📘 Tài liệu tham khảo:
- IAM roles for Compute Engine (GCP Docs).
- Service accounts overview (cross-project usage).
- Snapshots permissions.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Grant the service account the IAM Role of Compute Storage Admin in the project called proj-vm.
Lý do 🛠️:
- Service account từ proj-sa cần quyền compute.snapshots.create và compute.disks.get để lấy snapshots của VMs ở proj-vm.
- Role Compute Storage Admin (roles/compute.storageAdmin) chính xác cung cấp các quyền này (bao gồm quản lý persistent disks và snapshots cross-project).
- Cách này an toàn, tuân thủ best practices: Grant role trực tiếp trên project proj-vm cho service account cụ thể. Không cần tải private key (rủi ro lộ thông tin) hay thay đổi VM.
🧐 Giải thích tất cả các phương án (đúng/sai)
-
❌ [SAI] Download the private key from the service account, and add it to each VMs custom metadata.
Giải thích sai: Private key của service account dùng để authenticate API calls từ client-side (như gcloud), không phải add vào metadata của VM. Việc này không cấp quyền snapshot (VM không tự động dùng key đó), còn gây rủi ro bảo mật cao (key lộ công khai). Không tuân thủ nguyên tắc không chia sẻ credentials. -
❌ [SAI] Download the private key from the service account, and add the private key to each VM's SSH keys.
Giải thích sai: SSH keys chỉ dùng cho truy cập SSH vào VM (user-based), không liên quan đến API permissions như snapshot. Add private key vào đây vô nghĩa, không cấp IAM quyền cross-project, và cực kỳ nguy hiểm (private key dùng cho SSH có thể bị exploit). -
✅ [ĐÚNG] Grant the service account the IAM Role of Compute Storage Admin in the project called proj-vm.
Giải thích đúng: Như đã nêu ở phần đáp án. Role này cấp đầy đủ quyềncompute.snapshots.*trên project proj-vm. Thực hiện quagcloud projects add-iam-policy-binding proj-vm --member="serviceAccount:sa@proj-sa.iam.gserviceaccount.com" --role="roles/compute.storageAdmin". Hoàn hảo cho cross-project access! 🎯 -
❌ [SAI] When creating the VMs, set the service account's API scope for Compute Engine to read/write.
Giải thích sai: API scopes (nhưhttps://www.googleapis.com/auth/computeread/write) chỉ áp dụng cho service account gắn với chính VM (default hoặc custom lúc tạo VM). Không ảnh hưởng đến service account từ project khác (proj-sa). VMs ở proj-vm vẫn không nhận quyền từ service account ngoại lai.
- A Change the default region property setting in the existing GCP project to asia-northeast1.
- B Change the region property setting in the existing App Engine application from us-central to asia-northeast1.
- C Create a second App Engine application in the existing GCP project and specify asia-northeast1 as the region to serve your application.
- D Create a new GCP project and create an App Engine application inside this new project. Specify asia-northeast1 as the region to serve your application.
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi này thuộc chủ đề Google Cloud Platform (GCP) - App Engine, tập trung vào việc thay đổi vùng (region) phục vụ ứng dụng App Engine.
- Tình huống: Bạn đã tạo một project GCP chứa ứng dụng App Engine, ban đầu cấu hình phục vụ từ vùng us-central (miền Bắc Mỹ). Bây giờ, bạn muốn chuyển ứng dụng sang phục vụ từ vùng asia-northeast1 (miền Đông Bắc châu Á, như Tokyo).
- Vấn đề cốt lõi: App Engine có đặc tính vùng (region) là bất biến (immutable) – nghĩa là một khi ứng dụng được tạo, vùng phục vụ không thể thay đổi sau. Điều này nhằm đảm bảo tính ổn định, bảo mật và hiệu suất. Do đó, không thể chỉnh sửa trực tiếp mà phải sử dụng cách tiếp cận mới.
- Mục tiêu: Tìm hành động đúng để di chuyển hoặc tái tạo ứng dụng sang vùng mới mà không vi phạm quy tắc GCP.
📘 Kiến thức cập nhật (đến 2026): Theo tài liệu chính thức GCP (phiên bản mới nhất App Engine Standard/Flexible Environment), mỗi project chỉ hỗ trợ một ứng dụng App Engine duy nhất, và vùng được chọn lúc tạo app là không thể thay đổi. Xem chi tiết tại:
Cloud App Engine Locations và App Engine FAQ.
✅ Đáp án đúng
Create a new GCP project and create an App Engine application inside this new project. Specify asia-northeast1 as the region to serve your application.
Lý do lựa chọn 🛠️:
Đây là cách chuẩn và duy nhất để thay đổi vùng phục vụ App Engine. Vì vùng là bất biến, bạn phải:
- Tạo project GCP mới.
- Tạo ứng dụng App Engine mới trong project đó, chỉ định asia-northeast1 lúc deploy (qua
gcloud app create --region=asia-northeast1). - Migrate code, data (nếu có) từ app cũ sang app mới (sử dụng Cloud Storage, Datastore export/import).
Điều này tránh downtime lớn và tuân thủ quy tắc GCP. Không thể chỉnh sửa app/project cũ!
🔍 Giải thích tất cả các phương án
Dưới đây là phân tích từng lựa chọn một cách chi tiết, giữ nguyên văn bản gốc (tiếng Anh). Mỗi phương án được đánh dấu ✅ (đúng) hoặc ❌ (sai), kèm lý do bằng tiếng Việt rõ ràng:
-
❌ Change the default region property setting in the existing GCP project to asia-northeast1.
Sai vì: Project GCP không có "default region property" có thể thay đổi để ảnh hưởng đến App Engine. Region của App Engine được set riêng biệt lúc tạo app, không liên kết với default region của project (default region chỉ dùng cho một số dịch vụ khác như Compute Engine). Thay đổi này không tác động đến app hiện tại và sẽ gây lỗi! -
❌ Change the region property setting in the existing App Engine application from us-central to asia-northeast1.
Sai vì: Region của App Engine app là bất biến (immutable) sau khi tạo. GCP không cho phép chỉnh sửa region qua console, gcloud CLI hoặc API. Thử làm sẽ báo lỗi "Region cannot be changed". Đây là quy tắc cốt lõi để tránh gián đoạn dịch vụ! -
❌ Create a second App Engine application in the existing GCP project and specify asia-northeast1 as the region to serve your application.
Sai vì: Mỗi project GCP chỉ hỗ trợ một ứng dụng App Engine duy nhất (single app per project). Không thể tạo app thứ hai trong cùng project. Nếu thửgcloud app createlần nữa, hệ thống sẽ báo lỗi "Application already exists in this project".
🛠️ Lời khuyên thực hành: Sau khi tạo project/app mới, sử dụng gcloud app deploy để deploy code và chuyển traffic qua DNS/ load balancer. Backup data bằng Datastore Admin hoặc Cloud SQL nếu cần!
📘 Tài liệu tham khảo bổ sung:
- gcloud app create (chỉ định region lúc tạo).
- Migrate App Engine apps.
Cập nhật đến 2026: Không có thay đổi về immutable region trong App Engine Standard/Flex.
- A Run gcloud iam roles describe roles/spanner.databaseUser. Add the users to the role.
- B Run gcloud iam roles describe roles/spanner.databaseUser. Add the users to a new group. Add the group to the role.
- C Run gcloud iam roles describe roles/spanner.viewer - -project my-project. Add the users to the role.
- D Run gcloud iam roles describe roles/spanner.viewer - -project my-project. Add the users to a new group. Add the group to the role.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi tập trung vào việc cấp quyền truy cập cho ba người dùng để họ có thể xem (view) và chỉnh sửa (edit) dữ liệu bảng trên một instance Cloud Spanner (dịch vụ cơ sở dữ liệu phân tán của Google Cloud).
✅ Yêu cầu chính: Quyền phải bao gồm cả đọc (read) và ghi (write/edit) dữ liệu, áp dụng cho instance Cloud Spanner.
🛠️ Bối cảnh: Cloud Spanner sử dụng IAM (Identity and Access Management) để quản lý quyền. Các role predefined như spanner.databaseUser cho phép đọc/ghi dữ liệu, trong khi spanner.viewer chỉ cho phép đọc. Best practice cho nhiều user (như 3 người ở đây) là sử dụng Google Groups để quản lý tập trung, tránh thêm từng user riêng lẻ. Lệnh gcloud iam roles describe dùng để xem mô tả role trước khi cấp quyền (sau đó dùng lệnh khác như gcloud spanner databases add-iam-policy-binding để bind).
📘 Kiến thức cập nhật (2026): Theo tài liệu GCP mới nhất (phiên bản Cloud Spanner IAM roles v1.3+), quyền databaseUser vẫn là chuẩn cho read/write dữ liệu database, và Google khuyến nghị dùng groups cho scalability (xem Cloud Spanner IAM roles và Best practices for IAM).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Run gcloud iam roles describe roles/spanner.databaseUser. Add the users to a new group. Add the group to the role.
Lý do:
- Role
spanner.databaseUserchính xác cho phép kết nối database, đọc và ghi (edit) dữ liệu – phù hợp với "view and edit". - Với 3 users, tạo new group, thêm users vào group, rồi bind group vào role là best practice (dễ quản lý, scalable).
- Lệnh
describegiúp kiểm tra role trước khi thực hiện.
🛡️ Lợi ích: Giảm rủi ro, dễ revoke quyền hàng loạt nếu cần.
📋 Giải thích tất cả các phương án (đúng/sai)
-
❌ Phương án SAI: Run gcloud iam roles describe roles/spanner.databaseUser. Add the users to the role.
Giải thích: Rolespanner.databaseUserđúng cho view/edit, nhưng thêm trực tiếp 3 users vào role không phải best practice (khó quản lý nếu số lượng tăng). Nên dùng group để tập trung hóa. -
✅ Phương án ĐÚNG: Run gcloud iam roles describe roles/spanner.databaseUser. Add the users to a new group. Add the group to the role.
Giải thích: Kết hợp đúng roledatabaseUser(read/write) + group cho multiple users. Đây là cách tối ưu theo GCP guidelines, đảm bảo an toàn và dễ scale. -
❌ Phương án SAI: Run gcloud iam roles describe roles/spanner.viewer --project my-project. Add the users to the role.
Giải thích: Rolespanner.viewerchỉ cho xem metadata và đọc dữ liệu (read-only), không hỗ trợ edit (write). Thêm--projectthừa vì Spanner IAM thường bind tại instance/database level. Không đáp ứng yêu cầu edit. -
❌ Phương án SAI: Run gcloud iam roles describe roles/spanner.viewer --project my-project. Add the users to a new group. Add the group to the role.
Giải thích: Dù dùng group là tốt, nhưng rolespanner.viewerchỉ read-only, không cho edit dữ liệu.--projectkhông cần thiết cho Spanner IAM bindings.
🛠️ Hướng dẫn thực hiện thực tế (bonus tip)
- Tạo group:
gcloud alpha identity groups create group@yourdomain.com. - Thêm users: Sử dụng Google Admin Console.
- Bind role:
gcloud spanner instances add-iam-policy-binding your-instance --member=group:group@yourdomain.com --role=roles/spanner.databaseUser.
📘 Tài liệu tham khảo:
- Cloud Spanner Access Control (cập nhật 2025).
- gcloud IAM commands (v462+).
- A Enable the Node Auto-Repair feature for your GKE cluster.
- B Enable the Node Auto-Upgrades feature for your GKE cluster.
- C Select the latest available cluster version for your GKE cluster.
- D Select ג€Container-Optimized OS (cos)ג€ as a node image for your GKE cluster.
Xem giải thích
🧩 Phân tích chi tiết nội dung câu hỏi
Câu hỏi tập trung vào việc tạo một cụm GKE (Google Kubernetes Engine) mới và đảm bảo rằng cụm này luôn chạy phiên bản Kubernetes được hỗ trợ và ổn định.
📌 Mục tiêu chính: Không chỉ chọn phiên bản ban đầu mà phải có cơ chế tự động duy trì phiên bản Kubernetes ở trạng thái ổn định lâu dài, tránh tình trạng lỗi thời hoặc không được hỗ trợ (unsupported). GKE quản lý Kubernetes qua control plane (do Google quản lý) và node pools (máy ảo chạy workloads). Phiên bản Kubernetes cần được cập nhật định kỳ để nhận patch bảo mật, tính năng mới và tránh end-of-life (EOL).
🛠️ Bối cảnh: Theo tài liệu GKE mới nhất (cập nhật đến 2026), Google khuyến nghị sử dụng tính năng tự động hóa để cluster luôn ở phiên bản stable release channel hoặc tương đương, đảm bảo tính sẵn sàng cao (high availability).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Enable the Node Auto-Upgrades feature for your GKE cluster.
Lý do:
- Tính năng Node Auto-Upgrades tự động nâng cấp node pools (bao gồm Kubernetes version trên nodes) lên phiên bản mới nhất được hỗ trợ và ổn định theo lịch của Google (thường hàng quý).
- Nó đảm bảo cluster luôn chạy phiên bản stable, kết hợp với control plane auto-upgrades (mặc định bật), giúp tránh thủ công can thiệp và giảm downtime.
- ✅ Lợi ích nổi bật: Tự động áp dụng patch bảo mật, hỗ trợ multi-version rolling upgrades, phù hợp với best practice GKE (theo docs 2026).
📘 Tài liệu tham khảo:
- GKE Node auto-upgrades (Google Cloud Docs, cập nhật 2026).
- GKE best practices for upgrades.
🔍 Giải thích tất cả các phương án (đúng/sai)
Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc tiếng Anh. Mỗi phương án được đánh giá dựa trên khả năng đảm bảo cluster luôn chạy phiên bản Kubernetes supported & stable:
-
Enable the Node Auto-Repair feature for your GKE cluster.
❌ Sai: Tính năng Node Auto-Repair chỉ tự động sửa chữa nodes lỗi (như restart nếu CPU/memory cao hoặc unhealthy), không liên quan đến việc nâng cấp phiên bản Kubernetes. Nó giúp ổn định hoạt động nodes nhưng không đảm bảo phiên bản luôn được cập nhật supported/stable. -
Enable the Node Auto-Upgrades feature for your GKE cluster.
✅ Đúng: Như đã giải thích ở trên, đây là giải pháp chính xác nhất để tự động duy trì phiên bản Kubernetes stable trên nodes, kết hợp rolling upgrades an toàn. -
Select the latest available cluster version for your GKE cluster.
❌ Sai: Chọn latest version chỉ áp dụng cho lần tạo cluster ban đầu, không tự động cập nhật sau này. Phiên bản "latest" có thể nhanh chóng trở thành unsupported (EOL sau 1 năm), dẫn đến cluster không stable lâu dài. GKE có release channels (Regular/Stable) để quản lý tốt hơn, nhưng cần auto-upgrades. -
Select “Container-Optimized OS (cos)” as a node image for your GKE cluster.
❌ Sai: Container-Optimized OS (COS) là image node được khuyến nghị (nhẹ, bảo mật cao, tự động update OS/kernel), nhưng nó không kiểm soát phiên bản Kubernetes. COS chỉ tối ưu hóa môi trường chạy container, không đảm bảo Kubernetes version luôn supported/stable – vẫn cần auto-upgrades riêng.
🧠 Kết luận: Sử dụng Node Auto-Upgrades là best practice để cluster GKE luôn "future-proof" với Kubernetes! Nếu cần thực hành, dùng gcloud container clusters create với --enable-autoupgrade.
- A Configure an HTTP(S) load balancer.
- B Configure an internal TCP load balancer.
- C Configure an external SSL proxy load balancer.
- D Configure an external TCP proxy load balancer.
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi này thuộc chủ đề Load Balancing trong Google Cloud Platform (GCP), cụ thể là cách thiết lập load balancer cho một instance group (nhóm máy ảo được quản lý bởi Managed Instance Group - MIG) để phục vụ ứng dụng web công khai qua HTTPS.
📋 Yêu cầu chính từ câu hỏi:
- Load balancer phải terminate client SSL session (kết thúc phiên SSL từ client tại load balancer, không chuyển tiếp SSL đến backend).
- Instance group dùng cho public web application over HTTPS (ứng dụng web công khai).
- Phải tuân thủ Google-recommended practices (thực hành khuyến nghị của Google, ưu tiên tính năng Layer 7 như path-based routing, autoscaling, và quản lý chứng chỉ SSL dễ dàng).
🛠️ Bối cảnh kỹ thuật:
- Instance group là backend phổ biến cho các load balancer trong GCP.
- Ứng dụng web HTTPS cần load balancer hỗ trợ SSL offloading (giải mã SSL tại LB để giảm tải backend), health checks dựa trên HTTP/HTTPS, và khả năng global distribution.
- Theo tài liệu GCP mới nhất (cập nhật đến 2024-2026, không thay đổi lớn ở phiên bản hiện tại), HTTP(S) Load Balancer là lựa chọn khuyến nghị cho web apps public HTTPS vì nó là global external Layer 7 LB, hỗ trợ đầy đủ SSL termination với Google-managed SSL certificates (như Google-managed certs hoặc custom certs qua Certificate Manager).
📘 Nguồn tham khảo:
- Google Cloud Load Balancing Overview
- HTTP(S) Load Balancing Best Practices
- Choosing a Load Balancer (khuyến nghị HTTP(S) LB cho HTTPS web traffic).
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Configure an HTTP(S) load balancer.
Lý do 🏆:
- HTTP(S) Load Balancer là external global Layer 7 load balancer lý tưởng cho ứng dụng web public HTTPS. Nó terminate SSL ngay tại LB (sử dụng frontend HTTPS với SSL certs), sau đó forward traffic HTTP đến backend instance group.
- Tuân thủ Google-recommended practices: Hỗ trợ autoscaling MIG, content-based routing (URL maps), CDN integration (Cloud CDN), và health checks HTTP/HTTPS chính xác.
- Phù hợp hoàn hảo với public web app: An toàn, scalable, và tối ưu chi phí.
🔍 Giải thích tất cả các phương án
Dưới đây là phân tích từng lựa chọn một cách chi tiết, giữ nguyên văn bản gốc bằng tiếng Anh. Mỗi phương án được đánh giá đúng/sai với lý do cụ thể dựa trên kiến thức GCP mới nhất.
-
Configure an HTTP(S) load balancer.
✅ ĐÚNG. Như đã giải thích ở trên, đây là lựa chọn chuẩn cho public HTTPS web app. Nó terminate SSL, hỗ trợ backend là instance group (MIG hoặc ZIG), và là global LB với anycast IP. Google khuyến nghị sử dụng vì tính năng Layer 7 vượt trội (URL rewriting, header manipulation). -
Configure an internal TCP load balancer.
❌ SAI. Internal TCP Load Balancer chỉ hoạt động bên trong VPC (không public), dùng cho traffic TCP/UDP nội bộ. Không hỗ trợ external public access hay SSL termination cho client-facing HTTPS. Không phù hợp với "public web application". -
Configure an external SSL proxy load balancer.
❌ SAI. External SSL Proxy LB là Layer 4 proxy cho non-HTTP SSL traffic (như TCP/UDP với SSL), terminate SSL tại LB nhưng không hiểu HTTP (không có URL-based routing hay HTTP health checks). Google không khuyến nghị cho web apps vì thiếu tính năng Layer 7; chỉ dùng cho legacy apps hoặc protocols khác HTTPS web. -
Configure an external TCP proxy load balancer.
❌ SAI. External TCP Proxy LB là Layer 4 cho TCP traffic thuần (không terminate SSL), forward nguyên vẹn TCP stream đến backend. Không xử lý HTTPS/SSL termination, buộc backend phải handle SSL – vi phạm yêu cầu "terminate the client SSL session". Không khuyến nghị cho web apps vì thiếu SSL offloading và Layer 7 features.
🧠 Tóm tắt nhanh: Chỉ HTTP(S) LB đáp ứng đầy đủ public + HTTPS + SSL termination + Google best practices. Các lựa chọn khác hoặc internal, hoặc Layer 4 kém linh hoạt hơn! Nếu triển khai thực tế, dùng gcloud CLI hoặc Console để setup với MIG backend.
- A Use the GCP Console to transfer the file instead of gsutil.
- B Enable parallel composite uploads using gsutil on the file transfer.
- C Decrease the TCP window size on the machine initiating the transfer.
- D Change the storage class of the bucket from Nearline to Multi-Regional.
Xem giải thích
🧩 Phân tích chi tiết câu hỏi
Câu hỏi này thuộc chủ đề Google Cloud Storage (GCS), tập trung vào việc tối ưu hóa tốc độ upload một file lớn (32 GB) lên bucket Nearline Storage qua kết nối WAN 1 Gbps.
- Bối cảnh chính: Bạn có file đơn lẻ 32 GB cần upload vào bucket Nearline (lớp lưu trữ giá rẻ, ít truy cập). Kết nối mạng 1 Gbps (tương đương ~125 MB/s lý thuyết), và bạn là người dùng duy nhất nên có thể tận dụng toàn bộ băng thông. Mục tiêu: Upload nhanh nhất có thể bằng cách sử dụng tối đa 1 Gbps.
- Thách thức: Upload file lớn qua mạng WAN thường bị giới hạn bởi TCP congestion control, latency, và cách tool xử lý (serial vs parallel). File lớn cần chia nhỏ để upload song song nhằm bão hòa bandwidth.
- Kiến thức liên quan (cập nhật đến 2026): GCS hỗ trợ gsutil với tùy chọn parallel composite uploads (sử dụng flag
-mcho multi-threaded/multi-part uploads). Điều này chia file thành các chunk (mặc định 8 MB/chunk), upload song song lên nhiều thread, giúp đạt tốc độ cao nhất trên kết nối nhanh. Nearline không ảnh hưởng đến tốc độ upload (chỉ tính phí lưu trữ), và công cụ như gsutil là chuẩn cho large file transfers.
📘 Tài liệu tham khảo:
- gsutil cp documentation (Google Cloud, cập nhật 2025)
- Best practices for large data transfers (GCS docs)
✅ Đáp án đúng: Enable parallel composite uploads using gsutil on the file transfer
Lý do chọn đáp án này 🛠️:
- gsutil với tùy chọn parallel composite uploads (lệnh:
gsutil -m cp file gs://bucket/) sẽ chia file thành nhiều phần nhỏ (chunks) và upload song song qua nhiều thread (mặc định lên đến 8-16 threads tùy cấu hình). - Điều này tận dụng tối đa 1 Gbps bằng cách bão hòa pipe mạng, giảm thời gian chờ ACK từ server, và vượt qua giới hạn TCP window scaling trên WAN.
- Với 32 GB và 1 Gbps, thời gian lý thuyết ~4 phút; parallel giúp đạt gần tốc độ lý thuyết (thực tế ~80-90% bandwidth). Không dùng parallel thì chỉ serial upload, chậm hơn nhiều (có thể chỉ 100-200 Mbps hiệu quả).
📋 Giải thích tất cả các phương án (đúng/sai)
-
❌ [SAI] Use the GCP Console to transfer the file instead of gsutil.
Lý do sai: GCP Console (web UI) chỉ hỗ trợ upload serial đơn giản, không parallel hay multi-part. Với 32 GB, nó sẽ rất chậm (thường <100 Mbps), dễ timeout, và không tận dụng 1 Gbps. gsutil là tool CLI tối ưu cho large files, Console chỉ phù hợp file nhỏ (<5 GB). -
✅ [ĐÚNG] Enable parallel composite uploads using gsutil on the file transfer.
(Đã giải thích chi tiết ở phần trên). Đây là best practice chính thức từ Google cho high-bandwidth transfers. -
❌ [SAI] Decrease the TCP window size on the machine initiating the transfer.
Lý do sai: Giảm TCP window size sẽ hạn chế lượng dữ liệu gửi trước ACK, làm chậm transfer hơn (tăng latency impact). Để tối ưu WAN, cần tăng window size (qua tuning sysctl hoặc autoscaling), không phải giảm. Làm vậy sẽ xa rời mục tiêu 1 Gbps. -
❌ [SAI] Change the storage class of the bucket from Nearline to Multi-Regional.
Lý do sai: Storage class (Nearline vs Multi-Regional/Standard) chỉ ảnh hưởng phí lưu trữ và replication, không tác động tốc độ upload. Upload vẫn vào GCS edge locations gần nhất; class chỉ áp dụng sau khi object hoàn tất. Thay đổi không giúp parallel hay bandwidth.
🧠 Lời khuyên thực hành: Để test, dùng gsutil -m -D cp (debug mode) xem throughput. Nếu latency cao, kết hợp Transfer Service hoặc Storage Transfer Appliance cho >TB data. Hy vọng phân tích giúp bạn ôn thi Associate Cloud Engineer! 🚀
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp1-deployment
spec:
selector:
matchLabels:
app: myapp1
replicas: 2
template:
metadata:
labels:
app: myapp1
spec:
containers:
- name: main-container
image: gcr.io/my-company-repo/myapp1:1.4
env:
- name: DB_PASSWORD
value: "t0ugh2guess!"
ports:
- containerPort: 8080
You need to refactor this configuration so that the database password is not stored in plain text. You want to follow Google-recommended practices. What should you do?
- A Store the database password inside the Docker image of the container, not in the YAML file.
- B Store the database password inside a Secret object. Modify the YAML file to populate the DB_PASSWORD environment variable from the Secret.
- C Store the database password inside a ConfigMap object. Modify the YAML file to populate the DB_PASSWORD environment variable from the ConfigMap.
- D Store the database password in a file inside a Kubernetes persistent volume, and use a persistent volume claim to mount the volume to the container.
Xem giải thích
🧩 Phân tích nội dung câu hỏi
Câu hỏi này tập trung vào việc bảo mật cấu hình trong Google Kubernetes Engine (GKE), một dịch vụ quản lý Kubernetes trên Google Cloud Platform (GCP). Cụ thể:
- Bạn đã triển khai một microservice tên
myapp1dưới dạng Deployment với 2 replicas, sử dụng YAML manifest được cung cấp. - Trong YAML, biến môi trường DB_PASSWORD được lưu dưới dạng plain text (
"t0ugh2guess!"), điều này không an toàn vì ai có quyền đọc YAML hoặc manifest đều có thể thấy mật khẩu database. - Yêu cầu refactor: Loại bỏ plain text, thay bằng cách lưu trữ an toàn hơn, tuân thủ best practices của Google (dựa trên Kubernetes standards, vì GKE là managed Kubernetes).
- Mục tiêu: Sử dụng cơ chế Kubernetes để inject secret data vào container mà không expose plain text trong YAML.
📘 Kiến thức cập nhật: Theo tài liệu Kubernetes v1.29+ (GKE hỗ trợ đến 2026), Google khuyến nghị sử dụng Secrets cho dữ liệu nhạy cảm như passwords, keys. Không dùng plain text, images, hoặc ConfigMaps cho secrets.
✅ Đáp án đúng và lý do lựa chọn
Đáp án đúng: Store the database password inside a Secret object. Modify the YAML file to populate the DB_PASSWORD environment variable from the Secret.
Lý do:
- Secret là resource Kubernetes chuyên dụng để lưu dữ liệu nhạy cảm (như passwords, tokens) dưới dạng base64-encoded (không phải plain text, nhưng vẫn cần quản lý quyền truy cập).
- Bạn tạo Secret YAML riêng (ví dụ:
kubectl create secret generic db-secret --from-literal=DB_PASSWORD=t0ugh2guess!), rồi reference vào Deployment quaenvFromhoặcvalueFrom. - Google-recommended: GKE docs nhấn mạnh Secrets cho secrets management, tích hợp với Google Secret Manager cho enterprise.
- Ví dụ refactor YAML:
env: - name: DB_PASSWORD valueFrom: secretKeyRef: name: db-secret key: DB_PASSWORD - ✅ An toàn cao: Không expose trong Git/YAML, hỗ trợ rotation tự động.
Nguồn tham khảo:
- Kubernetes Secrets Docs (v1.29, 2024).
- GKE Best Practices: Manage Secrets (cập nhật 2025).
🛠️ Giải thích tất cả các phương án (đúng/sai)
Dưới đây là phân tích từng lựa chọn, giữ nguyên văn bản gốc tiếng Anh. Mỗi phương án được đánh giá dựa trên best practices Kubernetes/GKE (không khuyến khích plain text, ưu tiên Secrets cho sensitive data).
-
❌ [SAI] Store the database password inside the Docker image of the container, not in the YAML file.
Giải thích sai: Lưu password vào Docker image (qua DockerfileENVhoặc baked-in) vẫn expose plain text khi ai đó pull/extract image (docker inspect). Không tuân thủ immutable images (best practice), khó rotate password, và vi phạm "secrets không bake vào image". Google cấm hardcode secrets vào images. -
✅ [ĐÚNG] Store the database password inside a Secret object. Modify the YAML file to populate the DB_PASSWORD environment variable from the Secret.
Giải thích đúng: Như phần trên, Secret là cách chuẩn, an toàn, dễ quản lý. Mount as env var hoặc volume. Hỗ trợ RBAC để kiểm soát access. -
❌ [SAI] Store the database password inside a ConfigMap object. Modify the YAML file to populate the DB_PASSWORD environment variable from the ConfigMap.
Giải thích sai: ConfigMap dành cho non-sensitive config (như app settings). Nếu dùng cho password, nó base64 plain text, dễ đọc (kubectl get configmap -o yaml), không mã hóa at-rest (trừ khi dùng encryption provider). Google docs cảnh báo: "Không dùng ConfigMap cho secrets". -
❌ [SAI] Store the database password in a file inside a Kubernetes persistent volume, and use a persistent volume claim to mount the volume to the container.
Giải thích sai: PersistentVolume (PV) dùng cho dữ liệu stateful (như DB files), không phải secrets. Lưu file password trên PV vẫn expose nếu pod access volume, khó quản lý multi-pod (replicas), và không rotate dễ dàng. Google ưu tiên Secrets/PV cho storage riêng biệt, không mix secrets với PV.
Tóm tắt khuyến nghị nâng cao 🚀:
- Kết hợp Google Secret Manager với External Secrets Operator cho GKE (auto-sync secrets).
- Sử dụng Encryption at-rest cho etcd (GKE default từ 2023).
- Test:
kubectl execvào pod kiểm traecho $DB_PASSWORD(chỉ visible trong container runtime).
Nguồn bổ sung:
- GKE Security Best Practices (2025 update).