برای ایجاد ، به روزرسانی یا انجام سایر اقدامات اداری بر روی یک عملکرد ، باید یک مدیر اصلی داشته باشید که نقش مناسبی داشته باشد. برای اطلاعات بیشتر به استفاده از IAM برای مجاز بودن دسترسی مراجعه کنید.
اما استناد به یک عملکرد می تواند یک رویداد پیچیده تر باشد. توابع رویداد محور فقط توسط منبع رویداد که در آن مشترک شده اند قابل استفاده هستند ، اما توابع HTTP را می توان با انواع مختلفی از هویت ها فراخوانی کرد و در مکان های مختلف سرچشمه می گیرد. Invoker ممکن است یک توسعه دهنده باشد که عملکرد یا عملکرد یا خدمات دیگری را که مایل به استفاده از عملکرد است ، آزمایش می کند. به طور پیش فرض ، این هویت ها باید درخواست شناسه را برای تأیید اعتبار خود ارائه دهند. علاوه بر این ، حسابی که مورد استفاده قرار می گیرد نیز باید به مجوزهای مناسب اعطا شده باشد.
توجه: نشانه های ID همچنین حاوی اطلاعاتی در مورد هویتی هستند که آنها نشان می دهند. برای دسترسی به این اطلاعات ، می توانید از کتابخانه های گسترده در دسترس استفاده کنید.
دسترسی غیرمجاز بدون نشانه شناسه امکان پذیر است ، اما باید فعال شود. برای اطلاعات بیشتر به استفاده از IAM برای مجاز بودن دسترسی مراجعه کنید.
توجه: با استفاده از API CALL ، همه توابع را می توان فراخوانی کرد. شما فقط باید از این API برای اهداف آزمایش استفاده کنید. از آن در تولید استفاده نکنید.
احراز هویت تست توسعه دهنده
به عنوان یک توسعه دهنده ، برای ایجاد ، به روزرسانی و حذف توابع نیاز به دسترسی دارید و این با استفاده از فرآیند عادی (IAM) اعطا می شود.
اما به عنوان یک توسعه دهنده نیز به احتمال زیاد نیاز به استفاده از عملکردهای خود برای اهداف آزمایش دارید. برای فراخوانی یک تابع با استفاده از ابزارهای حلقوی یا مشابه ، باید:
- از حساب کاربری خود استفاده کنید تا به توابع ابری دسترسی داشته باشید که نقشی را شامل می شود که شامل CloudFunctions. Functions. Invoke است. به طور پیش فرض ، توابع Cloud Admins و Cloud Twarks نقشهای توسعه دهنده این مجوز را دارند. برای لیست کامل نقش ها و مجوزهای مرتبط با آنها ، توابع ابر را مشاهده کنید.
- اگر در حال کار از دستگاه محلی خود هستید ، با تنظیم اولیه Google Cloud CLI دسترسی به خط فرمان را تنظیم کنید.
- اعتبار تأیید اعتبار را در درخواست خود به عنوان یک نشانه شناسه تولید شده توسط Google که در یک عنوان مجوز ذخیره شده است ، ارائه دهید. به عنوان مثال ، شما ممکن است از طریق GCloud به شرح زیر یک نشانه دریافت کنید:
CUR L-H "مجوز: Bearer $ (Gcloud Auth چاپ-شناسایی-تکن)" https: //منطقه-project_id. cloudfunctions. net/contion_name
مثل همیشه ، ما توصیه می کنیم حداقل مجموعه مجوزهای مورد نیاز برای توسعه و استفاده از توابع خود را اختصاص دهید. اطمینان حاصل کنید که خط مشی های IAM در مورد کارکردهای شما به حداقل تعداد کاربران و حساب های خدمات محدود می شود.
عملکرد تأیید کننده برای عملکرد تماس ها
هنگام ساختن خدماتی که چندین توابع را به هم وصل می کنند ، ایده خوبی است که اطمینان حاصل کنید که هر عملکرد فقط می تواند درخواست ها را به زیر مجموعه خاصی از سایر کارکردهای شما ارسال کند. به عنوان مثال ، اگر عملکرد ورود به سیستم دارید ، باید بتوانید به عملکرد پروفایل های کاربر دسترسی پیدا کنید ، اما احتمالاً نباید بتواند به عملکرد جستجو دسترسی پیدا کند.
برای پیکربندی تابع دریافت برای پذیرش درخواست ها از یک عملکرد تماس خاص ، باید نقش مناسب فراخوانی را به حساب خدمات عملکرد تماس با عملکرد دریافت کننده اعطا کنید. برای عملکردهای ژنرال 1 ، نقش Invoker توابع Cloud Invoker (نقش ها/CloudFunctions. Invoker) است. برای عملکردهای ژنرال 2 ، نقش Invoker Cloud Run Invoker (نقش/run. invoker) است و باید در سرویس زیربنایی اعطا شود.
توابع ابر (ژنرال اول):
کنسول
برای توابع ژنرال 1 ، از توابع Cloud Invoker استفاده می کنید:
- به کنسول Google Cloud بروید: به Google Cloud Console بروید
- روی کادر انتخاب کنار عملکرد دریافت کلیک کنید.(روی خود عملکرد کلیک نکنید.)
- روی مجوزها در بالای صفحه کلیک کنید. پانل مجوزها باز می شود.
- روی افزودن اصلی کلیک کنید.
- در قسمت جدید Principals ، هویت عملکرد فراخوانی را وارد کنید. این باید یک ایمیل حساب خدمات باشد.
- Select the role Cloud Functions>توابع Cloud از منوی کشویی Select A Role استفاده می کند.
- روی ذخیره کلیک کنید.
گلابی
با استفاده از دستور GCLOUD ADD-IAM-POLICY-POLICY:
عملکرد Gcloud به الزام آمیز-سیاست گذاریعملکرد_ -عضو = 'serviceaccount:calling_function_dentity' -role =' نقش ها/CloudFunctions. Invoker '
در جایی که دریافت_فیلیک نام عملکرد دریافت کننده است و Calling_function_itientity هویت عملکرد فراخوانی ، یک ایمیل حساب کاربری است.
توابع ابر (ژن 2):
کنسول
برای توابع ژنرال 2 ، شما از Cloud Run Invoker استفاده می کنید:
- به کنسول Google Cloud بروید: به Google Cloud Console بروید
- در لیست خدمات Cloud Run ، روی کادر انتخاب کنار عملکرد دریافت کلیک کنید.(روی خود عملکرد کلیک نکنید.) پانل مجوزها باز می شود.
- روی افزودن اصلی کلیک کنید.
- هویت سرویس تماس را وارد کنید. این معمولاً یک آدرس ایمیل است ، به طور پیش فرض project_number-compute@developer. gserviceaccount.com. توجه داشته باشید که شماره پروژه از شناسه پروژه و نام پروژه متمایز است. می توانید شماره پروژه خود را در صفحه داشبورد کنسول Google Cloud پیدا کنید.
- نقش Cloud Run Invoker را از منوی کشویی Select A Mole انتخاب کنید.
- روی ذخیره کلیک کنید.
گلابی
با استفاده از دستور GCLOUD توابع افزودنی-اتصال-پلیدی:
عملکرد Gcloud به افزودنی-اتصال-المحلی عمل می کندعملکرد_ -عضو = 'serviceaccount:calling_function_dentity'
در جایی که دریافت_فیلیک نام عملکرد دریافت کننده است و Calling_function_itientity هویت عملکرد فراخوانی ، یک ایمیل حساب کاربری است.
از آنجا که از عملکرد دریافت کننده استفاده می کند ، عملکرد فراخوانی نیز باید یک نشانه شناسه امضا شده با گوگل را برای تأیید اعتبار فراهم کند. این یک روند دو مرحله ای است:
- با زمینه مخاطبان (AUD) روی URL عملکرد دریافت کننده ، یک نشانه شناسه امضا شده با Google ایجاد کنید.
- Token ID را در یک مجوز قرار دهید: هدر Bearer ID_Token در درخواست عملکرد.
تا کنون ساده ترین و مطمئن ترین روش برای مدیریت این فرآیند استفاده از کتابخانه های احراز هویت ، همانطور که در زیر نشان داده شده است ، برای تولید و استفاده از این نشانه است.
تولید نشانه ها به صورت برنامه ای
بعد از اینکه کد زیر یک شناسه شناسه ایجاد می کند ، عملکرد ابر شما را با آن نشانه از طرف شما صدا می کند. این کد در هر محیطی کار می کند که کتابخانه ها بتوانند اعتبار احراز هویت را بدست آورند ، از جمله محیط هایی که از اعتبار پیش فرض برنامه های محلی پشتیبانی می کنند.
node. js
/*** TODO (توسعه دهنده): این متغیرها را قبل از اجرای نمونه از بین ببرید.*/// توابع ابر از URL عملکرد شما به عنوان مقدار "TargetAudience" // const TargetAudience = 'https://project-region-projectid. cloudfunctions. net/myfunction' استفاده می کند.// برای توابع ابر ، نقطه پایانی ("url`) و" TargetAudience "باید برابر باشند // const url = TargetAudience ؛const = نیاز ("Google-auth-library") ؛const auth = googleauth جدید () ؛درخواست عملکرد async () request().catch(err => );
پیتون
وارد کردن urllib واردات google. auth. transport. requests وارد کردن google. oauth2کتابخانه با استفاده از مقدار مخاطب مشخص شده. "" " # توابع ابر از URL عملکرد شما به عنوان" مخاطب " # مخاطب = https://project-region-projectid. cloudfunctions. net/myfunction # برای توابع ابر ،" نقطه پایانی "و" نقطه پایانی "و`مخاطب باید برابر باشد req = urllib. request. request (نقطه پایانی) auth_req = google. auth. transport. request. requests. request () id_token = google. oauth2. id_token. fetch_id_token (auth_req ، مخاطب) req. add_header (" مجوز "، f "تحمل") پاسخ = urllib. request. urlopen (req) پاسخ بازگشت. Read ()
Go
واردات ("زمینه" "fmt" "io" "google. golang.org/api/idtoken") // `makegetRequest" درخواستی را برای ارائه شده "TargetUrl" // با یک مشتری معتبر با استفاده از مخاطب "مخاطب" ارائه می دهد. Func MakeGetRequest (w io. writer ، رشته TargetURL ، رشته مخاطب)به ترتیب ، err: = client. get (targeturl) اگر اشتباه کنید! = صفرdefer rep. body. close () اگر _ ، err: = io. copy (w ، resp. body) ؛خطا! = صفرretu nil>
جاوا
واردات com. google. api. client. http. genericurl ؛وارد کردن com. google. api. client. http. httprequest ؛واردات com. google. api. client. http. httpresponse ؛واردات com. google. api. client. http. httptransport ؛واردات com. google. api. client. http. javanet. nethtttptransport ؛واردات com. google. auth. http. httpcredentialsadapter ؛واردات com. google. auth. oauth2. googlecredentials ؛واردات com. google. auth. oauth2. idtokencredentials ؛واردات com. google. auth. oauth2. idtokenprovider ؛وارد کردن java. io. ioexception ؛احراز هویت کلاس عمومیIdTokenCredentials tokenCredential = IdTokenCredentials.newBuilder() .setIdTokenProvider((IdTokenProvider) credentials) .setTargetAudience(audience) .build(); GenericUrl genericUrl = new GenericUrl(serviceUrl); HttpCredentialsAdapter adapter = new HttpCredentialsAdapter(tokenCredential); HttpTransport transport = new NetHttpTransport(); HttpRequest request = transport.createRequestFactory(adapter).buildGetRequest(genericUrl); retu request.execute();>>
تولید توکن به صورت دستی
اگر در حال استفاده از یک عملکرد هستید و به دلایلی نمی توانید از کتابخانه های احراز هویت استفاده کنید ، دو روش وجود دارد که می توانید شناسه را به صورت دستی دریافت کنید ، یا با استفاده از سرور ابرداده محاسباتی یا با ایجاد JWT خود امضا شده و تبادل آن برای Googleنشانه شناسه طراحی شده.
توجه: برای راه های دیگر برای به دست آوردن این نشانه ، به روش هایی برای دریافت یک نشانه شناسه مراجعه کنید.
با استفاده از سرور ابرداده
می توانید از سرور ابرداده محاسباتی برای واکشی نشانه های شناسه با مخاطب خاص به شرح زیر استفاده کنید:
curl "http: //metadata. google. inteal/computemetadata/v1/instance/service-accounts/default/entientity؟ مخاطبان = [مخاطب]" -h "ابرداده-فلوک: گوگل"
جایی که مخاطب URL عملکردی است که شما از آن استفاده می کنید ، مانند https://gcp_region-project_id. cloudfunctions. net/my-function.
توجه: این روش از یک دستگاه محلی کار نمی کند.
مبادله JWT خود امضا شده برای یک نشانه شناسنامه Google
- نقش Cloud Tware Invoker (نقش ها/CloudFunctions. Invoker) را به حساب خدمات عملکرد تماس با عملکرد دریافت کننده اعطا کنید.
- یک حساب کاربری و یک کلید ایجاد کنید و فایل را با کلید خصوصی (با فرمت JSON) در میزبان بارگیری کنید که عملکرد یا سرویس تماس از آن درخواست های خود را ایجاد می کند.
- یک JWT را با هدر تنظیم شده ایجاد کنید. بارگذاری باید شامل یک ادعای هدف_آیدایی باشد که بر روی URL عملکرد دریافت کننده و ISS و مطالبات فرعی تنظیم شده در آدرس ایمیل حساب سرویس استفاده شده در بالا قرار دارد. همچنین باید شامل ادعاهای EXP و IAT باشد. ادعای AUD باید روی https://www.googleapis.com/oauth2/v4/token تنظیم شود.
- برای امضای JWT از کلید خصوصی بارگیری شده در بالا استفاده کنید.
- با استفاده از این JWT ، درخواست پست را به https://www.googleapis.com/oauth2/v4/token ارسال کنید. داده های احراز هویت باید در هدر و بدنه درخواست گنجانده شود. در هدر:
مجوز: Bearer $ JWT-جایی که $ JWT JWT است که شما به تازگی از نوع محتوا ایجاد کرده اید: Application/x-www-form-urlencoded
در بدن:
Grant_Type = URN: IETF: PARAMS: OAUTH: نوع کمک هزینه: JWT-BEARER & DISSERTION = $ JWT
درخواست دریافت/پست خود را برای عملکرد دریافت ارسال کنید. نشانه شناسه امضا شده Google را در یک مجوز قرار دهید: هدر Bearer ID_TOKEN_JWT در درخواست.
توجه: یک شناسه شناسه امضا شده با Google یک ساعت از درخواستی که در ابتدا آن را تولید می کند منقضی می شود.
چه بعدی است
- بیاموزید که چگونه دسترسی به توابع را مدیریت کنید.
- با روش های دیگر برای تولید نشانه های شناسه کمک بگیرید.
ارسال بازخورد
به جز آنچه در غیر این صورت ذکر شد ، محتوای این صفحه تحت مجوز Creative Commons Attribution 4. 0 مجوز دارد و نمونه های کد تحت مجوز Apache 2. 0 مجوز دارند. برای جزئیات بیشتر ، به سیاست های سایت Google Developers مراجعه کنید. جاوا یک علامت تجاری ثبت شده اوراکل و/یا شرکت های وابسته به آن است.
آخرین به روز شده 2023-03-20 UTC.
بهترین استراتژی معاملات...
ما را در سایت بهترین استراتژی معاملات دنبال می کنید
برچسب : نویسنده : صدرا ذوالریاستین بازدید : 33 تاريخ : شنبه 31 تير 1402 ساعت: 20:12