1. บทนำ
ภาพรวม
ฟังก์ชัน Cloud Run เป็นโซลูชันการประมวลผลที่ใช้งานง่ายสำหรับนักพัฒนาซอฟต์แวร์ในการสร้างฟังก์ชันสแตนด์อโลนวัตถุประสงค์เดียวที่เรียกให้แสดงโดยใช้ HTTPS หรือตอบสนองต่อ CloudEvents ได้โดยไม่ต้องจัดการเซิร์ฟเวอร์หรือสภาพแวดล้อมรันไทม์ ดูข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน Cloud Run ในบล็อกโพสต์ของเรา
การควบคุมการเรียกใช้ฟังก์ชัน Cloud Run มี 2 วิธีหลักๆ ได้แก่ การรักษาความปลอดภัยในการเข้าถึงตามข้อมูลประจำตัว และการรักษาความปลอดภัยในการเข้าถึงโดยใช้การควบคุมการเข้าถึงตามเครือข่าย โค้ดแล็บนี้มุ่งเน้นที่แนวทางแรกและอธิบายสถานการณ์ 3 รูปแบบสำหรับการรักษาความปลอดภัยในการเข้าถึงตามข้อมูลประจำตัวเพื่อเรียกใช้ฟังก์ชัน ดังนี้
- ใช้โทเค็นข้อมูลประจำตัวของ gcloud เพื่อเรียกใช้ฟังก์ชันสำหรับการทำให้ใช้งานได้ภายในเครื่องและทดสอบ
- เลียนแบบบัญชีบริการเมื่อพัฒนาและทดสอบในเครื่องเพื่อใช้ข้อมูลเข้าสู่ระบบเดียวกันกับในเวอร์ชันที่ใช้งานจริง
- ใช้ไลบรารีของไคลเอ็นต์ Google เพื่อจัดการการตรวจสอบสิทธิ์กับ Google Cloud APIs เช่น เมื่อบริการจำเป็นต้องเรียกใช้ฟังก์ชัน
สิ่งที่คุณจะได้เรียนรู้
- วิธีกำหนดค่าการตรวจสอบสิทธิ์ในฟังก์ชัน Cloud Run และยืนยันว่าได้กำหนดค่าการตรวจสอบสิทธิ์อย่างถูกต้อง
- เรียกใช้ฟังก์ชันที่ตรวจสอบสิทธิ์แล้วจากสภาพแวดล้อมการพัฒนาในเครื่องโดยระบุโทเค็นสําหรับข้อมูลประจําตัว gcloud
- วิธีสร้างบัญชีบริการและมอบบทบาทที่เหมาะสมให้กับบัญชีเพื่อเรียกใช้ฟังก์ชัน
- วิธีแอบอ้างเป็นบริการจากสภาพแวดล้อมการพัฒนาในเครื่องซึ่งมีบทบาทที่เหมาะสมสำหรับการเรียกใช้ฟังก์ชัน
2. การตั้งค่าและข้อกำหนด
ข้อกำหนดเบื้องต้น
- คุณเข้าสู่ระบบ Cloud Console แล้ว
- ก่อนหน้านี้คุณได้ทำให้ฟังก์ชัน Cloud Run ที่ทริกเกอร์ด้วย HTTP ใช้งานได้ ดูตัวอย่างการเริ่มต้นใช้งาน
- (ไม่บังคับ) สำหรับสถานการณ์ที่ 3 นี้ Codelab นี้ใช้ Node.js และ npm เป็นตัวอย่าง แต่คุณใช้รันไทม์ใดก็ได้ที่ไลบรารีไคลเอ็นต์ของ Google Auth รองรับ
เปิดใช้งาน Cloud Shell
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell
หากนี่เป็นครั้งแรกที่คุณเริ่มใช้ Cloud Shell คุณจะเห็นหน้าจอกลางที่อธิบายเกี่ยวกับ Cloud Shell หากเห็นหน้าจอกลาง ให้คลิกต่อไป
การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที
เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่จำเป็น โดยมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณทํางานส่วนใหญ่หรือทั้งหมดในโค้ดแล็บนี้ได้โดยใช้เบราว์เซอร์
เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นการรับรองและโปรเจ็กต์ที่ตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณ
- เรียกใช้คำสั่งต่อไปนี้ใน 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`
- เรียกใช้คำสั่งต่อไปนี้ใน 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 มีดังนี้
- สร้างไดเรกทอรีใหม่
mkdir local-dev && cd $_
- สร้างแอป Node.js ใหม่
npm init -y
- ติดตั้งไลบรารีไคลเอ็นต์ Google Auth
npm install google-auth-library
- สร้างไฟล์
index.js
- เรียกข้อมูล URL ของฟังก์ชัน Cloud Run ซึ่งคุณจะเพิ่มลงในโค้ดในขั้นตอนถัดไป
echo $FUNCTION_URL
- เพิ่มโค้ดต่อไปนี้ลงใน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;
});
- เรียกใช้แอป
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