Mail Admin Quarantine API برای خودکارسازیهای سمت سرور مانند خطوط لوله امنیتی و ادغامهای SIEM یا SOAR طراحی شده است. این خودکارسازیها با حساب سرویس Google Cloud اصالتسنجی میشوند که از تفویض اختیار در سطح دامنه برای اقدام ازطرف سرپرست Google Workspace که دارای امتیاز سرپرست لازم است استفاده میکند.
این صفحه توضیح میدهد که API به کدام گسترههای OAuth 2.0 نیاز دارد و چگونه میتوان حساب سرویس را پیکربندی کرد و کد دسترسی دریافت کرد.
گسترههای OAuth 2.0
«میانای برنامهسازی کاربردی قرنطینه سرپرست» از دامنههای OAuth 2.0 زیر استفاده میکند:
| حوزه | معنی |
|---|---|
https://www.googleapis.com/auth/gmail.admin.quarantine |
مشاهده و مدیریت کردن پیامهای قرنطینهشده. برای انتشار یا رد کردن پیامها، بهصورت تکی یا دستهای، لازم است. |
https://www.googleapis.com/auth/gmail.admin.quarantine.readonly |
مشاهده پیامهای قرنطینهشده. برای فهرست کردن، جستجو کردن، و دریافت پیامها، فهرست کردن و دریافت قرنطینهها، و دریافت وضعیت عملیات دستهای کافی است. |
جدول زیر نشان میدهد هر روش کدام گستره را میپذیرد:
| روش | gmail.admin.quarantine |
gmail.admin.quarantine.readonly |
|---|---|---|
customers.quarantinedMessages.list |
✓ | ✓ |
customers.quarantinedMessages.search |
✓ | ✓ |
customers.quarantinedMessages.get |
✓ | ✓ |
customers.quarantines.list |
✓ | ✓ |
customers.quarantines.get |
✓ | ✓ |
customers.operations.get |
✓ | ✓ |
customers.quarantinedMessages.release |
✓ | |
customers.quarantinedMessages.deny |
✓ | |
customers.quarantinedMessages.batchRelease |
✓ | |
customers.quarantinedMessages.batchDeny |
✓ |
از اصل حداقل امتیاز پیروی کنید: برای ادغامهایی که فقط قرنطینه را نظارت میکنند، حوزه فقط خواندنی را درخواست کنید.
اگر درخواستی از یک کد استفاده کند که شامل یک دامنه پذیرفتهشده نباشد، API یک خطای 403 با دلیل ACCESS_TOKEN_SCOPE_INSUFFICIENT برمیگرداند.
ایجاد حساب سرویس
- در کنسول Google Cloud، به مدیریت هویت و دسترسی و سرپرست > حسابهای سرویس بروید و پروژه Google Cloud را که در آن میانای برنامهسازی کاربردی را فعال کردهاید انتخاب کنید.
- روی ایجاد حساب سرویس کلیک کنید، نامی مثل
quarantine-api-service-accountوارد کنید، و روی ایجاد و ادامه کلیک کنید. لازم نیست هیچ نقش IAM به حساب سرویس اعطا کنید. روی تمام کلیک کنید. - حساب سرویس را باز کنید و در برگه جزئیات،
شناسه کارخواه OAuth 2 را کپی کنید. این شماره ۲۱ رقمی است، برای مثال
109876543210987654321. در بخش بعدی به این شناسه نیاز دارید. - در برگه کلیدها، روی افزودن کلید > ایجاد کلید جدید کلیک کنید، JSON را انتخاب کنید، و روی ایجاد کلیک کنید. فایل کلید JSON بارگیریشده را بهطور ایمن ذخیره کنید.
برای اطلاعات بیشتر، ایجاد اطلاعات کاربری برای حساب سرویس را ببینید.
مجاز کردن واگذاری در سطح دامنه
به حساب سرویس اجازه دهید به دامنههای Admin Quarantine API در حساب Google Workspace شما دسترسی داشته باشد:
- بهعنوان اَبَرسرپرست به سیستم کنسول سرپرست Google وارد شوید.
- به امنیت > دسترسی و کنترل داده > کنترلهای میانای برنامهسازی کاربردی بروید.
- در بخش واگذاری اختیارات در سراسر دامنه، روی مدیریت واگذاری اختیارات در سراسر دامنه کلیک کنید.
- روی افزودن جدید کلیک کنید.
- در فیلد شناسه کارخواه، شناسه کارخواه OAuth 2.0 حساب سرویس را وارد کنید. نشانی ایمیل حساب سرویس را وارد نکنید.
در فیلد گسترههای OAuth، یکی از گسترههای زیر را وارد کنید:
- برای دسترسی خواندن و نوشتن:
https://www.googleapis.com/auth/gmail.admin.quarantine - برای دسترسی فقط خواندنی:
https://www.googleapis.com/auth/gmail.admin.quarantine.readonly
- برای دسترسی خواندن و نوشتن:
روی Authorize (صدور مجوز) کلیک کنید.
برای جزئیات، کنترل دسترسی به میانای برنامهسازی کاربردی با واگذاری سراسری دامنه را ببینید.
دریافت کد دسترسی
برای فراخوانی API، حساب سرویس با تنظیم کردن ادعای subject (sub) درخواست توکن روی نشانی ایمیل سرپرست، خود را بهجای سرپرست جا میزند. سرپرست باید
امتیاز سرپرست لازم را داشته باشد.
نمونه Python زیر از کتابخانه
google-auth برای دریافت کد دسترسی
استفاده میکند:
from google.oauth2 import service_account
import google.auth.transport.requests
SERVICE_ACCOUNT_FILE = 'service_account.json'
# An administrator with the Access Admin Quarantine privilege.
ADMIN_EMAIL = 'admin@example.com'
SCOPES = ['https://www.googleapis.com/auth/gmail.admin.quarantine']
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE,
scopes=SCOPES,
subject=ADMIN_EMAIL,
)
credentials.refresh(google.auth.transport.requests.Request())
access_token = credentials.token
توکن را در سرایند Authorization هر درخواست ارسال کنید:
Authorization: Bearer ACCESS_TOKEN
کدهای دسترسی پساز یک ساعت منقضی میشوند. بهجای ذخیره کردن موقت توکنها برای مدت طولانی، اطلاعات کاربری را قبلاز هر دسته درخواست بازآوری کنید.
عیبیابی خطاهای صدور مجوز
| وضعیت HTTP | استدلال | وضوح |
|---|---|---|
401 UNAUTHENTICATED |
سرایند Authorization وجود ندارد، یا قالب کد نادرست است یا منقضی شده است. |
کد دسترسی جدیدی دریافت کنید و آن را بهعنوان رمزیاب دارنده اضافه کنید. |
403 ACCESS_TOKEN_SCOPE_INSUFFICIENT |
این توکن شامل حوزهای نیست که روش میپذیرد. | برای روشهای انتشار و رد کردن، گستره https://www.googleapis.com/auth/gmail.admin.quarantine را درخواست کنید و مطمئن شوید گستره در «کنسول سرپرست» مجاز شده باشد. |
403 PERMISSION_DENIED |
سرپرست جعلشده امتیاز قرنطینه سرپرست را ندارد یا به قرنطینهای که پیام را نگه میدارد دسترسی ندارد. | به سرپرست، دسترسی به قرنطینه سرپرست یا دسترسی به قرنطینههای محدودشده اعطا کنید. |
403 SERVICE_DISABLED یا 404 NOT_FOUND در هر روش |
میانای برنامهسازی کاربردی در پروژه Cloud فعال نیست یا پروژه در «برنامه پیشنمایش توسعهدهندگان نرمافزار» ثبتنام نشده است. | میانای برنامهسازی کاربردی را فعال کنید و ثبتنامتان را در Google Workspace Developer Preview Program تأیید کنید. |