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

1. บทนำ

ภาพรวม

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

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

  1. ใช้โทเค็นข้อมูลประจำตัว gcloud เพื่อเรียกใช้ฟังก์ชันเพื่อวัตถุประสงค์ในการพัฒนาและการทดสอบในเครื่อง
  2. แอบอ้างเป็นบัญชีบริการเมื่อพัฒนาและทดสอบในเครื่องเพื่อใช้ข้อมูลเข้าสู่ระบบเดียวกันกับในเวอร์ชันที่ใช้งานจริง
  3. ใช้ไลบรารีของไคลเอ็นต์ 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 ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานส่วนใหญ่หรือทั้งหมดใน Codelab นี้ได้ด้วยเบราว์เซอร์

เมื่อเชื่อมต่อกับ 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

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

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

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

ADC จะค้นหาข้อมูลเข้าสู่ระบบโดยอัตโนมัติตามสภาพแวดล้อมของแอปพลิเคชัน และใช้ข้อมูลเข้าสู่ระบบเหล่านั้นเพื่อตรวจสอบสิทธิ์กับ Google Cloud APIs แฟล็ก –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

index.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" ในทรัพยากร (หรืออาจไม่มีอยู่)" โปรดรอสักครู่เพื่อให้บทบาทผู้สร้างโทเค็นบัญชีบริการมีผล

หากได้รับข้อผิดพลาด "ดึงโทเค็นรหัสในสภาพแวดล้อมนี้ไม่ได้ โปรดใช้ 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 Console ของฟังก์ชัน 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