ดูวิธีเรียกใช้ฟังก์ชัน Cloud Run ที่มีการตรวจสอบสิทธิ์

ดูวิธีเรียกใช้ฟังก์ชัน Cloud Run ที่มีการตรวจสอบสิทธิ์

เกี่ยวกับ Codelab นี้

subjectอัปเดตล่าสุดเมื่อ ก.ย. 13, 2024
account_circleเขียนโดย Googler

1 บทนำ

ภาพรวม

ฟังก์ชัน Cloud Run เป็นโซลูชันการประมวลผลที่ใช้งานง่ายสำหรับนักพัฒนาซอฟต์แวร์ในการสร้างฟังก์ชันสแตนด์อโลนวัตถุประสงค์เดียวที่เรียกให้แสดงโดยใช้ HTTPS หรือตอบสนองต่อ CloudEvents ได้โดยไม่ต้องจัดการเซิร์ฟเวอร์หรือสภาพแวดล้อมรันไทม์ ดูข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน Cloud Run ในบล็อกโพสต์ของเรา

การควบคุมการเรียกใช้ฟังก์ชัน Cloud Run มี 2 วิธีหลักๆ ได้แก่ การรักษาความปลอดภัยในการเข้าถึงตามข้อมูลประจำตัว และการรักษาความปลอดภัยในการเข้าถึงโดยใช้การควบคุมการเข้าถึงตามเครือข่าย โค้ดแล็บนี้มุ่งเน้นที่แนวทางแรกและอธิบายสถานการณ์ 3 รูปแบบสำหรับการรักษาความปลอดภัยในการเข้าถึงตามข้อมูลประจำตัวเพื่อเรียกใช้ฟังก์ชัน ดังนี้

  1. ใช้โทเค็นข้อมูลประจำตัวของ gcloud เพื่อเรียกใช้ฟังก์ชันสำหรับการทำให้ใช้งานได้ภายในเครื่องและทดสอบ
  2. เลียนแบบบัญชีบริการเมื่อพัฒนาและทดสอบในเครื่องเพื่อใช้ข้อมูลเข้าสู่ระบบเดียวกันกับในเวอร์ชันที่ใช้งานจริง
  3. ใช้ไลบรารีของไคลเอ็นต์ Google เพื่อจัดการการตรวจสอบสิทธิ์กับ Google Cloud APIs เช่น เมื่อบริการจำเป็นต้องเรียกใช้ฟังก์ชัน

สิ่งที่คุณจะได้เรียนรู้

  • วิธีกำหนดค่าการตรวจสอบสิทธิ์ในฟังก์ชัน Cloud Run และยืนยันว่าได้กำหนดค่าการตรวจสอบสิทธิ์อย่างถูกต้อง
  • เรียกใช้ฟังก์ชันที่ตรวจสอบสิทธิ์แล้วจากสภาพแวดล้อมการพัฒนาในเครื่องโดยระบุโทเค็นสําหรับข้อมูลประจําตัว gcloud
  • วิธีสร้างบัญชีบริการและมอบบทบาทที่เหมาะสมให้กับบัญชีเพื่อเรียกใช้ฟังก์ชัน
  • วิธีแอบอ้างเป็นบริการจากสภาพแวดล้อมการพัฒนาในเครื่องซึ่งมีบทบาทที่เหมาะสมสำหรับการเรียกใช้ฟังก์ชัน

2 การตั้งค่าและข้อกําหนด

ข้อกำหนดเบื้องต้น

เปิดใช้งาน Cloud Shell

  1. จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell d1264ca30785e435.png

84688aa223b1c3a2.png

หากนี่เป็นครั้งแรกที่คุณเริ่มใช้ Cloud Shell คุณจะเห็นหน้าจอกลางที่อธิบายเกี่ยวกับ Cloud Shell หากเห็นหน้าจอกลาง ให้คลิกต่อไป

d95252b003979716.png

การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที

7833d5e1c5d18f54.png

เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่จำเป็น โดยมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณทํางานส่วนใหญ่หรือทั้งหมดในโค้ดแล็บนี้ได้โดยใช้เบราว์เซอร์

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นการรับรองและโปรเจ็กต์ที่ตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณ

  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคุณได้รับการตรวจสอบสิทธิ์แล้ว
gcloud auth list

เอาต์พุตจากคำสั่ง

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project

เอาต์พุตจากคำสั่ง

[core]
project = <PROJECT_ID>

หากไม่เป็นเช่นนั้น ให้ตั้งค่าด้วยคําสั่งนี้

gcloud config set project <PROJECT_ID>

เอาต์พุตจากคำสั่ง

Updated property [core/project].

3 สร้างและทดสอบฟังก์ชัน Cloud Run ที่มีการตรวจสอบสิทธิ์

การกําหนดให้ต้องตรวจสอบสิทธิ์หมายความว่าผู้ใช้ที่เรียกใช้ฟังก์ชันต้องมีบทบาทผู้เรียกใช้ Cloud Run มิเช่นนั้นฟังก์ชันจะแสดงข้อผิดพลาด 403 Forbidden Codelab นี้จะแสดงวิธีมอบบทบาทผู้เรียกใช้ที่เหมาะสมให้กับหลักการ

ตั้งค่าตัวแปรสภาพแวดล้อมในเครื่องสำหรับคำสั่ง gcloud แบบง่าย

ก่อนอื่น คุณจะต้องสร้างตัวแปรสภาพแวดล้อม 2-3 รายการเพื่อให้คำสั่ง gcloud ที่ใช้ใน Codelab นี้อ่านได้ง่ายขึ้น

REGION=us-central1
PROJECT_ID=$(gcloud config get-value project)

สร้างซอร์สโค้ดของฟังก์ชัน

แม้ว่า Codelab นี้จะใช้ Node.js แต่คุณสามารถใช้รันไทม์ใดก็ได้ที่ไลบรารีของไคลเอ็นต์ Google Auth รองรับ

ก่อนอื่น ให้สร้างไดเรกทอรีและ cd ไปยังไดเรกทอรีนั้น

mkdir auth-function-codelab && cd $_

จากนั้นสร้างไฟล์ package.json

touch package.json

echo '{
  "dependencies": {
    "@google-cloud/functions-framework": "^3.0.0"
  }
}
' > package.json

ถัดไป ให้สร้างไฟล์ต้นฉบับ index.js

touch index.js

echo 'const functions = require("@google-cloud/functions-framework");

functions.http("helloWorld", (req, res) => {
 res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});' > index.js

สร้างฟังก์ชันที่ตรวจสอบสิทธิ์แล้ว

ขั้นตอนในการสร้างฟังก์ชันการตรวจสอบสิทธิ์สำหรับรันไทม์ Nodejs20 มีดังนี้ อย่างไรก็ตาม คุณสามารถใช้รันไทม์ใดก็ได้ที่ไลบรารีไคลเอ็นต์ Google Auth รองรับ

FUNCTION_NAME=authenticated-function-codelab
ENTRY_POINT=helloWorld

หากต้องการทำให้ฟังก์ชัน Cloud Run ใช้งานได้ใน Cloud Run โดยตรง ให้เรียกใช้คําสั่งต่อไปนี้

gcloud beta run deploy $FUNCTION_NAME \
      --source . \
      --function helloWorld \
      --region $REGION \
      --no-allow-unauthenticated

จากนั้นบันทึก URL ของฟังก์ชันเป็นตัวแปรสภาพแวดล้อมเพื่อใช้ภายหลัง

FUNCTION_URL="$(gcloud run services describe $FUNCTION_NAME --region $REGION --format 'value(status.url)')"

หากต้องการทําให้การเผยแพร่เป็น Cloud Functions รุ่นที่ 2 ให้ใช้คําสั่งต่อไปนี้

gcloud functions deploy nodejs-http-function \
  --gen2 \
  --runtime=nodejs20 \
  --region=$REGION \
  --source=. \
  --entry-point=helloWorld \
  --trigger-http \
  --no-allow-unauthenticated

จากนั้นบันทึก URL ของฟังก์ชันเป็นตัวแปรสภาพแวดล้อมเพื่อใช้ภายหลัง

FUNCTION_URL="$(gcloud functions describe $FUNCTION_NAME --gen2 --region us-central1 --format='get(serviceConfig.uri)')"

ยืนยันว่าฟังก์ชันต้องมีการตรวจสอบสิทธิ์โดยพยายามเรียกใช้ในฐานะผู้เรียกที่ไม่ระบุชื่อ

คุณจะเรียกใช้ฟังก์ชันโดยไม่มีการตรวจสอบสิทธิ์เพื่อยืนยันว่าคุณได้รับข้อผิดพลาด 403 ที่คาดไว้

จากบรรทัดคำสั่ง ให้เรียกใช้คำสั่ง curl ต่อไปนี้

curl -i $FUNCTION_URL

คุณจะเห็นผลลัพธ์ต่อไปนี้

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>403 Forbidden</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Forbidden</h1>
<h2>Your client does not have permission to get URL <code>/</code> from this server.</h2>
<h2></h2>
</body></html>

ตอนนี้คุณพร้อมที่จะดู 3 สถานการณ์ที่คุณสามารถเรียกใช้ฟังก์ชันด้วยการให้การตรวจสอบสิทธิ์แล้ว

4 สถานการณ์ 1: ใช้โทเค็นข้อมูลประจำตัว gcloud

ในฐานะนักพัฒนาซอฟต์แวร์ คุณจะต้องหาวิธีทดสอบฟังก์ชันขณะพัฒนาในเครื่อง ในส่วนนี้ คุณจะทำการตรวจสอบอย่างรวดเร็วเพื่อยืนยันว่าฟังก์ชันได้รับการตรวจสอบสิทธิ์อย่างถูกต้องโดยใช้ตัวตนของคุณเอง

ยืนยันว่าคุณตรวจสอบสิทธิ์โดยใช้ gcloud โดยเรียกใช้คําสั่งต่อไปนี้

gcloud auth list

คุณควรเห็นเครื่องหมายดอกจันข้างข้อมูลประจำตัวที่ใช้งานอยู่ เช่น

Credentialed Accounts
ACTIVE  ACCOUNT

*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า gcloud init และ gcloud auth login ได้ในเอกสาร

ถัดไป ให้เรียกใช้ฟังก์ชันและส่งโทเค็นข้อมูลประจำตัวของคุณ

curl $FUNCTION_URL -H "Authorization: bearer $(gcloud auth print-identity-token)"

ตอนนี้คุณจะเห็นผลลัพธ์ดังนี้

Hello World!

การแก้ปัญหา

หากได้รับข้อผิดพลาด 403 Forbidden ให้ตรวจสอบว่าข้อมูลประจำตัวของคุณมีบทบาทผู้เรียกใช้ Cloud Run คุณสามารถใช้คอนโซล IAM เพื่อยืนยันบทบาทที่มอบให้กับผู้รับอนุญาตได้

แม้ว่าการใช้โทเค็นข้อมูลประจำตัวของคุณเองจะช่วยให้ทดสอบฟังก์ชันในระหว่างการพัฒนาได้อย่างรวดเร็ว แต่ผู้เรียกใช้ฟังก์ชันที่ตรวจสอบสิทธิ์แล้วจะต้องมีบทบาทที่เหมาะสม มิฉะนั้น ผู้โทรจะได้รับข้อผิดพลาด 403 Forbidden

คุณควรปฏิบัติตามหลักการของสิทธิ์ขั้นต่ำที่สุดโดยจำกัดจำนวนข้อมูลประจำตัวและบัญชีบริการที่มีบทบาทในการเรียกใช้ฟังก์ชัน ในสถานการณ์ถัดไป คุณจะได้เรียนรู้วิธีสร้างบัญชีบริการใหม่และมอบบทบาทที่เหมาะสมให้กับบัญชีเพื่อเรียกใช้ฟังก์ชัน

5 สถานการณ์ 2: แอบอ้างบัญชีบริการ

ในสถานการณ์นี้ คุณจะแอบอ้างเป็นบุคคลอื่น (เช่น อ้างสิทธิ์ใน) บัญชีบริการเพื่อเรียกใช้ฟังก์ชันเมื่อพัฒนาและทดสอบภายใน การแอบอ้างเป็นบัญชีบริการช่วยให้คุณทดสอบฟังก์ชันด้วยข้อมูลเข้าสู่ระบบเดียวกันกับในเวอร์ชันที่ใช้งานจริงได้

การทำเช่นนี้จะไม่เพียงไม่เพียงยืนยันบทบาท แต่ยังจะทำตามหลักการให้สิทธิ์ขั้นต่ำโดยไม่ต้องมอบบทบาทผู้เรียกใช้ Cloud Function ให้กับข้อมูลประจำตัวอื่นๆ เพื่อวัตถุประสงค์ในการทดสอบภายในเท่านั้นด้วย

คุณจะสร้างบัญชีบริการใหม่ที่มีบทบาทในการเรียกใช้ฟังก์ชันที่คุณสร้างขึ้นในโค้ดแล็บนี้เท่านั้นเพื่อวัตถุประสงค์ของโค้ดแล็บนี้

สร้างบัญชีบริการใหม่

ก่อนอื่น คุณจะต้องสร้างตัวแปรสภาพแวดล้อมเพิ่มเติม 2-3 รายการเพื่อแสดงบัญชีบริการที่ใช้ในคำสั่ง gcloud

SERVICE_ACCOUNT_NAME="invoke-functions-codelab"
SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com

ถัดไป คุณจะต้องสร้างบัญชีบริการ

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
  --display-name="Cloud Run function Authentication codelab"

และมอบบทบาทผู้เรียกใช้ Cloud Run ให้กับบัญชีบริการ ดังนี้

gcloud run services add-iam-policy-binding $FUNCTION_NAME \
  --region=us-central1  \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role='roles/run.invoker'

เรียกใช้ฟังก์ชันโดยการแอบอ้างบัญชีบริการ

โดยคุณจะแอบอ้างเป็นบัญชีบริการที่สร้างขึ้นใหม่ด้วยการรับโทเค็นระบุตัวตนของบัญชี

เพิ่มบทบาทที่จำเป็นสำหรับการแอบอ้างเป็นบุคคลอื่น

สำหรับการแอบอ้างบัญชีบริการ บัญชีผู้ใช้ของคุณต้องมีบทบาทผู้สร้างโทเค็นบัญชีบริการ (roles/iam.serviceAccountTokenCreator) เพื่อสร้างโทเค็นรหัสสำหรับบัญชีบริการ

คุณเรียกใช้คําสั่งต่อไปนี้เพื่อมอบบทบาทนี้ให้กับบัญชีผู้ใช้ที่ใช้งานอยู่ได้

ACCOUNT_EMAIL=$(gcloud auth list --filter=status:ACTIVE --format="value(account)")

gcloud iam service-accounts add-iam-policy-binding $SERVICE_ACCOUNT_ADDRESS  \
  --member user:$ACCOUNT_EMAIL \
  --role='roles/iam.serviceAccountTokenCreator'

ใช้โทเค็นรหัสของบัญชีบริการ

รอสักครู่เพื่อให้สิทธิ์มีผล ตอนนี้คุณเรียกใช้ฟังก์ชันได้โดยส่งโทเค็นระบุตัวตนของบัญชีบริการ

curl $FUNCTION_URL -H "Authorization: bearer $(gcloud auth print-identity-token --impersonate-service-account $SERVICE_ACCOUNT_ADDRESS)" 

และคุณจะเห็นข้อมูลต่อไปนี้

WARNING: This command is using service account impersonation. All API calls will be executed as [invoke-functions-codelab@<project-id>.iam.gserviceaccount.com].

Hello World!

6 สถานการณ์ 3: ใช้ไลบรารีไคลเอ็นต์ของ Google

ในส่วนสุดท้ายของโค้ดแล็บนี้ คุณจะต้องเรียกใช้บริการขนาดเล็กในเครื่องเพื่อสร้างโทเค็นระบุตัวตนสําหรับบัญชีบริการ จากนั้นเรียกใช้ฟังก์ชันแบบเป็นโปรแกรมโดยใช้ไลบรารีไคลเอ็นต์ Google Auth และข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (ADC) อ่านข้อมูลเพิ่มเติมเกี่ยวกับไลบรารีของไคลเอ็นต์ Google ได้ในส่วนอธิบายไลบรารีของไคลเอ็นต์ของเอกสาร

การใช้ ADC มีความสำคัญอย่างยิ่งเมื่อคุณต้องการเขียนและทดสอบฟังก์ชันในเครื่อง (เช่น ในแล็ปท็อป, ใน Cloud Shell ฯลฯ) ขณะโต้ตอบกับทรัพยากรอื่นๆ ของ Google Cloud (เช่น Cloud Storage, Vision API ฯลฯ) ในตัวอย่างนี้ คุณจะเห็นวิธีที่บริการหนึ่งๆ จะเรียกใช้ฟังก์ชันอื่นที่ต้องมีการตรวจสอบสิทธิ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ ADC และการพัฒนาในเครื่องได้ที่บล็อกโพสต์วิธีพัฒนาและทดสอบ Cloud Functions ในเครื่อง | บล็อก Google Cloud

เรียกใช้คำสั่ง gcloud เพื่อแอบอ้างเป็นบัญชีบริการ

ADC จะค้นหาข้อมูลเข้าสู่ระบบโดยอัตโนมัติตามสภาพแวดล้อมของแอปพลิเคชัน และใช้ข้อมูลเข้าสู่ระบบเหล่านั้นเพื่อตรวจสอบสิทธิ์กับ Google Cloud API Flag –impersonate-service-account ช่วยให้คุณแอบอ้างเป็นบัญชีบริการได้โดยใช้ข้อมูลประจำตัวของบัญชีนั้นเพื่อตรวจสอบสิทธิ์กับ Google Cloud API

หากต้องการแอบอ้างเป็นบัญชีบริการ ให้เรียกใช้คำสั่งต่อไปนี้

gcloud auth application-default login --impersonate-service-account=$SERVICE_ACCOUNT_ADDRESS

ตอนนี้คุณกำลังเรียกใช้คำสั่ง gcloud ในฐานะบัญชีบริการดังกล่าวแทนข้อมูลประจำตัวของคุณ

สร้างและเรียกใช้บริการเพื่อเรียกใช้ฟังก์ชันที่ตรวจสอบสิทธิ์แล้ว

รันไทม์แต่ละรายการจะมีไลบรารีของไคลเอ็นต์ Google Auth ของตนเองซึ่งคุณติดตั้งได้ Codelab นี้จะแนะนำการสร้างและเรียกใช้แอป Node.js ในเครื่อง

ขั้นตอนสำหรับ Node.js มีดังนี้

  1. สร้างไดเรกทอรีใหม่
mkdir local-dev && cd $_
  1. สร้างแอป Node.js ใหม่
npm init -y
  1. ติดตั้งไลบรารีไคลเอ็นต์ Google Auth
npm install google-auth-library
  1. สร้างไฟล์ index.js
  2. เรียกข้อมูล URL ของฟังก์ชัน Cloud Run ซึ่งคุณจะเพิ่มลงในโค้ดในขั้นตอนถัดไป
echo $FUNCTION_URL
  1. เพิ่มโค้ดต่อไปนี้ลงในindex.js อย่าลืมเปลี่ยนตัวแปร targetAudience เป็น URL ของฟังก์ชัน Cloud Run

ดัชนี.js

// Cloud Functions uses your function's url as the `targetAudience` value

const targetAudience = '<YOUR-CLOUD-RUN-FUNCTION-URL>';

// For Cloud Functions, endpoint(`url`) and `targetAudience` should be equal

const url = targetAudience;

const { GoogleAuth } = require('google-auth-library');
const auth = new GoogleAuth();

async
function request() {
    console
.info(`request ${url} with target audience ${targetAudience}`);

   
// this call retrieves the ID token for the impersonated service account
   
const client = await auth.getIdTokenClient(targetAudience);

   
const res = await client.request({ url });
    console
.info(res.data);
}

request
().catch(err => {
    console
.error(err.message);
    process
.exitCode = 1;
});
  1. เรียกใช้แอป
node index.js

คุณจะเห็นข้อความ "Hello World!" แสดงขึ้นมา

การแก้ปัญหา

หากเห็นข้อผิดพลาด "ปฏิเสธสิทธิ์ "iam.serviceAccounts.getOpenIdToken" ในทรัพยากร (หรืออาจไม่มี) โปรดรอ 2-3 นาทีเพื่อให้บทบาทผู้สร้างโทเค็นบัญชีบริการมีผล

หากคุณได้รับข้อผิดพลาด "ดึงข้อมูลโทเค็นระบุตัวตนในสภาพแวดล้อมนี้ไม่ได้ ให้ใช้ GCE หรือตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS เป็นไฟล์ JSON ของข้อมูลเข้าสู่ระบบบัญชีบริการ" คุณอาจลืมเรียกใช้คําสั่ง

gcloud auth application-default login --impersonate-service-account=$SERVICE_ACCOUNT_ADDRESS

7 ยินดีด้วย

ขอแสดงความยินดีที่เรียน Codelab จนจบ

เราขอแนะนําให้อ่านเอกสารประกอบเกี่ยวกับวิธีรักษาความปลอดภัยให้กับฟังก์ชัน Cloud Run

นอกจากนี้ เราขอแนะนําให้อ่านบล็อกโพสต์นี้เกี่ยวกับการพัฒนาในเครื่องด้วยฟังก์ชัน Cloud Run เพื่อดูวิธีพัฒนาและทดสอบฟังก์ชัน Cloud Run ในสภาพแวดล้อมของนักพัฒนาซอฟต์แวร์ในเครื่อง

สิ่งที่เราได้พูดถึง

  • วิธีกำหนดค่าการตรวจสอบสิทธิ์ในฟังก์ชัน Cloud Run และยืนยันว่าได้กำหนดค่าการตรวจสอบสิทธิ์อย่างถูกต้อง
  • เรียกใช้ฟังก์ชันที่ตรวจสอบสิทธิ์แล้วจากสภาพแวดล้อมการพัฒนาในเครื่องโดยระบุโทเค็นสําหรับข้อมูลประจําตัว gcloud
  • วิธีสร้างบัญชีบริการและมอบบทบาทที่เหมาะสมให้กับบัญชีเพื่อเรียกใช้ฟังก์ชัน
  • วิธีแอบอ้างเป็นบริการจากสภาพแวดล้อมการพัฒนาในเครื่องซึ่งมีบทบาทที่เหมาะสมสำหรับการเรียกใช้ฟังก์ชัน

8 ล้างข้อมูล

หากต้องการหลีกเลี่ยงการเรียกเก็บเงินโดยไม่ตั้งใจ (เช่น Cloud Function นี้มีการเรียกใช้โดยไม่ตั้งใจมากกว่าการจัดสรรการเรียกใช้ฟังก์ชัน Cloud Run รายเดือนในแพ็กเกจฟรี) คุณสามารถลบ Cloud Function หรือลบโปรเจ็กต์ที่สร้างไว้ในขั้นตอนที่ 2

หากต้องการหยุดการแอบอ้างเป็นบัญชีบริการ ให้เข้าสู่ระบบอีกครั้งโดยใช้ข้อมูลประจำตัวของคุณ โดยทำดังนี้

gcloud auth application-default login

หากต้องการลบฟังก์ชัน Cloud Run ให้ไปที่คอนโซล Cloud ของฟังก์ชัน Cloud Run ที่ https://console.cloud.google.com/functions/ ตรวจสอบว่าโปรเจ็กต์ที่คุณสร้างในขั้นตอนที่ 2 เป็นโปรเจ็กต์ที่เลือกอยู่ในปัจจุบัน

เลือก my-authenticated-function ที่คุณทำให้ใช้งานได้ก่อนหน้านี้ จากนั้นกดลบ

หากเลือกลบทั้งโปรเจ็กต์ ให้ไปที่ https://console.cloud.google.com/cloud-resource-manager เลือกโปรเจ็กต์ที่สร้างในขั้นตอนที่ 2 แล้วเลือก "ลบ" หากลบโปรเจ็กต์ คุณจะต้องเปลี่ยนโปรเจ็กต์ใน Cloud SDK คุณดูรายการโปรเจ็กต์ทั้งหมดที่ใช้ได้โดยการเรียกใช้ gcloud projects list