Cách sử dụng Proxy nhận dạng một lần nhấp (IAP) với Cloud Run

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 Proxy nhận dạng từ Cloud Run và bảo mật lưu lượng truy cập liên kết đến 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 lần nhấp 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.

Đối với 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 IAP một lần nhấp cho Cloud Run
  • Cách cấp quyền truy cập vào danh tính người dùng cho một dịch vụ Cloud Run thông qua IAP

2. Trước khi bắt đầu

Bật API

Trước khi bạn 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 sử dụng trong toàn bộ 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ụ đã bật IAP

Tạo tài khoản dịch vụ (dùng làm thông tin nhận dạng 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 đã 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 thử 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 giao dịch mua trong ứng dụng

Tạo trình đại diện dịch vụ IAP.

gcloud beta services identity create --service=iap.googleapis.com --project=${PROJECT_ID}

Chỉ định vai trò Trình gọi Cloud Run 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 một số người dùng hoặc nhóm 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 và 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 hình ảnh vùng chứa lên 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!

Bạn nên tham khảo tài liệu về IAP trên Cloud Run.

Nội dung đã đề cập

  • Cách bật tính năng thanh toán trong ứng dụng (IAP) một lần nhấp cho Cloud Run
  • Cách cấp quyền truy cập vào danh tính người dùng cho một dịch vụ Cloud Run thông qua IAP

8. Dọn dẹp

Để tránh bị tính phí do nhầm lẫn, ví dụ: nếu các dịch vụ Cloud Run vô tình được gọi nhiều lần hơn mức phân bổ số lần gọi Cloud Run hằng tháng 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 vào 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 SDK trên đám mây. Bạn có thể xem danh sách tất cả dự án hiện có bằng cách chạy gcloud projects list.