Policy

یک خط‌مشی مدیریت هویت و دسترسی (IAM)، که کنترل‌های دسترسی را برای منابع Google Cloud مشخص می‌کند.

یک Policy مجموعه ای از bindings است. یک binding یک یا چند members یا مدیر را به یک role واحد متصل می کند. اصلی‌ها می‌توانند حساب‌های کاربر، حساب‌های خدمات، گروه‌های Google و دامنه‌ها (مانند G Suite) باشند. role یک لیست نامگذاری شده از مجوزها است. هر role می تواند یک نقش از پیش تعریف شده IAM یا یک نقش سفارشی ایجاد شده توسط کاربر باشد.

برای برخی از انواع منابع Google Cloud، یک binding همچنین می‌تواند یک condition را مشخص کند، که یک عبارت منطقی است که تنها در صورتی امکان دسترسی به یک منبع را فراهم می‌کند که عبارت true ارزیابی شود. یک شرط می تواند بر اساس ویژگی های درخواست، منبع یا هر دو محدودیت هایی اضافه کند. برای اطلاع از اینکه کدام منابع شرایط را در خط‌مشی‌های IAM پشتیبانی می‌کنند، به مستندات IAM مراجعه کنید.

مثال JSON:

    {
      "bindings": [
        {
          "role": "roles/resourcemanager.organizationAdmin",
          "members": [
            "user:mike@example.com",
            "group:admins@example.com",
            "domain:google.com",
            "serviceAccount:my-project-id@appspot.gserviceaccount.com"
          ]
        },
        {
          "role": "roles/resourcemanager.organizationViewer",
          "members": [
            "user:eve@example.com"
          ],
          "condition": {
            "title": "expirable access",
            "description": "Does not grant access after Sep 2020",
            "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')",
          }
        }
      ],
      "etag": "BwWWja0YfJA=",
      "version": 3
    }

مثال YAML:

    bindings:
    - members:
      - user:mike@example.com
      - group:admins@example.com
      - domain:google.com
      - serviceAccount:my-project-id@appspot.gserviceaccount.com
      role: roles/resourcemanager.organizationAdmin
    - members:
      - user:eve@example.com
      role: roles/resourcemanager.organizationViewer
      condition:
        title: expirable access
        description: Does not grant access after Sep 2020
        expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
    etag: BwWWja0YfJA=
    version: 3

برای توضیح IAM و ویژگی های آن، به مستندات IAM مراجعه کنید.

نمایندگی JSON
{
  "version": integer,
  "bindings": [
    {
      object (Binding)
    }
  ],
  "etag": string
}
فیلدها
version

integer

فرمت خط مشی را مشخص می کند.

مقادیر معتبر 0 ، 1 و 3 هستند. درخواست هایی که یک مقدار نامعتبر را مشخص می کنند رد می شوند.

هر عملیاتی که بر پیوندهای نقش شرطی تأثیر می گذارد باید نسخه 3 مشخص کند. این الزام برای عملیات زیر اعمال می شود:

  • گرفتن یک خط مشی که شامل یک نقش مشروط الزام آور است
  • افزودن یک نقش مشروط الزام آور به یک سیاست
  • تغییر نقش مشروط الزام آور در یک سیاست
  • حذف هر نقش الزام آور، با یا بدون شرط، از سیاستی که شامل شرایط است

مهم: اگر از شرایط IAM استفاده می‌کنید، باید هر زمان که setIamPolicy صدا می‌زنید، قسمت etag اضافه کنید. اگر این فیلد را حذف کنید، IAM به شما اجازه می‌دهد تا یک خط‌مشی نسخه 3 را با خط‌مشی نسخه 1 بازنویسی کنید و تمام شرایط در خط‌مشی نسخه 3 از بین می‌رود.

اگر یک خط‌مشی شامل هیچ شرطی نباشد، عملیات روی آن خط‌مشی ممکن است هر نسخه معتبری را مشخص کند یا فیلد تنظیم نشده باقی بماند.

برای اطلاع از اینکه کدام منابع شرایط را در خط‌مشی‌های IAM پشتیبانی می‌کنند، به مستندات IAM مراجعه کنید.

bindings[]

object ( Binding )

فهرستی از members یا مدیران را با یک role مرتبط می‌کند. به صورت اختیاری، ممکن است condition را مشخص کند که نحوه و زمان اعمال bindings را تعیین می کند. هر یک از bindings باید حداقل شامل یک اصل باشد.

bindings در یک Policy می تواند به حداکثر 1500 اصل اشاره داشته باشد. حداکثر 250 نفر از این اصول می توانند گروه های Google باشند. هر وقوع یک اصل در این محدودیت ها حساب می شود. به عنوان مثال، اگر bindings 50 نقش مختلف را به user:alice@example.com اعطا کند، و نه به هیچ اصل دیگری، می‌توانید 1450 اصل دیگر را به bindings در Policy اضافه کنید.

etag

string ( bytes format)

etag برای کنترل همزمان خوشبینانه به عنوان راهی برای کمک به جلوگیری از به‌روزرسانی همزمان یک خط‌مشی از بازنویسی یکدیگر استفاده می‌شود. اکیداً پیشنهاد می‌شود که سیستم‌ها از این etag در چرخه خواندن-تغییر-نوشتن برای انجام به‌روزرسانی خط‌مشی استفاده کنند تا از شرایط مسابقه اجتناب کنند: یک etag در پاسخ به getIamPolicy برگردانده می‌شود و انتظار می‌رود سیستم‌ها آن برچسب را در درخواست setIamPolicy قرار دهند تا اطمینان حاصل کنند که تغییر آنها در همان نسخه خط‌مشی اعمال می‌شود.

مهم: اگر از شرایط IAM استفاده می‌کنید، باید هر زمان که setIamPolicy صدا می‌زنید، قسمت etag اضافه کنید. اگر این فیلد را حذف کنید، IAM به شما اجازه می‌دهد تا یک خط‌مشی نسخه 3 را با خط‌مشی نسخه 1 بازنویسی کنید و تمام شرایط در خط‌مشی نسخه 3 از بین می‌رود.

رشته ای با کد base64.