1. Giới thiệu
Tổng quan
Lớp học lập trình này hướng dẫn bạn cách bật Identity-Aware Proxy từ Cloud Run và bảo mật lưu lượng truy cập được liên kết với một dịch vụ Cloud Run bằng cách định tuyến đến IAP để xác thực. Bằng cách bật IAP từ Cloud Run, bạn có thể định tuyến lưu lượng truy cập chỉ bằng một cú nhấp chuột từ tất cả các đường dẫn truy cập, bao gồm cả URL run.app mặc định và bộ cân bằng tải.
Trong lớp học lập trình này, bạn sẽ triển khai dịch vụ vùng chứa hello. Chỉ những người dùng được đưa vào danh sách cho phép bằng IAP mới có quyền truy cập vào dịch vụ này.
Để biết các hạn chế đã biết khác, vui lòng xem tài liệu về IAP trên Cloud Run.
Kiến thức bạn sẽ học được
- Cách bật tính năng mua hàng trong ứng dụng chỉ bằng một cú nhấp chuột cho Cloud Run
- Cách cấp quyền truy cập danh tính người dùng vào một dịch vụ Cloud Run thông qua IAP
2. Trước khi bắt đầu
Bật API
Trước khi có thể bắt đầu sử dụng lớp học lập trình này, hãy bật các API sau bằng cách chạy:
gcloud services enable \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com \
iap.googleapis.com \
run.googleapis.com \
cloudresourcemanager.googleapis.com
3. Tạo biến môi trường
Thiết lập các biến môi trường sẽ được dùng trong suốt lớp học lập trình này
export PROJECT_ID=<YOUR_PROJECT_ID>
export REGION=<YOUR_REGION>
export SERVICE_NAME=iap-example
export SERVICE_ACCOUNT_NAME=iap-example-sa
export PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format="value(projectNumber)")
4. Triển khai dịch vụ có bật IAP
Tạo tài khoản dịch vụ (được dùng làm danh tính dịch vụ Cloud Run) bằng cách chạy lệnh sau:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
--display-name="IAP codelab CR identity"
Triển khai hình ảnh vùng chứa hello khi đã bật IAP.
gcloud beta run deploy ${SERVICE_NAME} \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--region=${REGION} \
--service-account $SERVICE_ACCOUNT_NAME@${PROJECT_ID}.iam.gserviceaccount.com \
--no-allow-unauthenticated \
--iap
Lưu ý: nếu cố gắng truy cập vào ứng dụng ngay bây giờ, bạn sẽ thấy trang lỗi You don't have access. Trong bước tiếp theo, bạn sẽ cấp cho người dùng quyền truy cập thông qua IAP.
5. Định cấu hình tính năng kiểm soát quyền truy cập vào IAP
Tạo tác nhân dịch vụ IAP.
gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}
Chỉ định vai trò Cloud Run Invoker cho tài khoản dịch vụ IAP
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-iap.iam.gserviceaccount.com" \
--role="roles/run.invoker"
Cấp quyền truy cập cho người dùng bằng cách cho phép người dùng hoặc nhóm người dùng cụ thể thông qua IAP
EMAIL_ADDRESS=<YOUR_EMAIL>
gcloud beta iap web add-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor \
--condition=None
Lưu ý: Bạn cũng có thể sử dụng group:your-group@example.com trong tham số thành viên nếu muốn.
6. Kiểm thử ứng dụng
Xác minh quyền truy cập vào ứng dụng
Lấy URL cho dịch vụ Cloud Run mẫu.
gcloud run services describe ${SERVICE_NAME} --region ${REGION} --format 'value(status.url)'
Mở URL trong trình duyệt, bạn sẽ thấy thông báo "Đang chạy! Xin chúc mừng, bạn đã triển khai thành công một hình ảnh vùng chứa vào Cloud Run"
Xác minh việc xoá quyền truy cập vào ứng dụng
Bạn có thể xoá quyền truy cập vào ứng dụng bằng cách chạy lệnh sau.
gcloud beta iap web remove-iam-policy-binding \
--resource-type=cloud-run \
--service=${SERVICE_NAME} \
--region=${REGION} \
--member=user:${EMAIL_ADDRESS} \
--role=roles/iap.httpsResourceAccessor
Chờ vài phút để chính sách IAM được truyền tải. Bây giờ, hãy thử mở URL trong trình duyệt và bạn sẽ thấy trang lỗi You don't have access.
7. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình này!
Bạn nên xem tài liệu về IAP trên Cloud Run.
Nội dung đã đề cập
- Cách bật tính năng mua hàng trong ứng dụng bằng một lần nhấp cho Cloud Run
- Cách cấp quyền truy cập danh tính người dùng vào một dịch vụ Cloud Run thông qua IAP
8. Dọn dẹp
Để tránh bị tính phí ngoài ý muốn, chẳng hạn như nếu các dịch vụ Cloud Run được gọi nhiều lần hơn hạn mức gọi Cloud Run hằng tháng của bạn trong cấp miễn phí, bạn có thể xoá dịch vụ Cloud Run iap-example mà bạn đã tạo ở Bước 6.
Để xoá dịch vụ Cloud Run, hãy truy cập Cloud Console của Cloud Run tại https://console.cloud.google.com/run rồi xoá dịch vụ iap-example.
Để xoá toàn bộ dự án, hãy chuyển đến phần Quản lý tài nguyên, chọn dự án của bạn rồi chọn Xoá. Nếu xoá dự án, bạn sẽ cần thay đổi dự án trong Cloud SDK. Bạn có thể xem danh sách tất cả các dự án có sẵn bằng cách chạy gcloud projects list.