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

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