Policy

นโยบาย Identity and Access Management (IAM) ซึ่งระบุการควบคุมการเข้าถึงสำหรับทรัพยากร Google Cloud

Policy คือคอลเล็กชันของ bindings binding จะเชื่อมโยง members หรือผู้ใช้ อย่างน้อย 1 รายการกับ role รายการเดียว โดยหลักการแล้ว บัญชีผู้ใช้ บัญชีบริการ กลุ่ม Google และโดเมน (เช่น G Suite) จะใช้ได้ role คือรายการสิทธิ์ที่มีชื่อ โดยroleแต่ละรายการอาจเป็นบทบาทที่กำหนดไว้ล่วงหน้าของ IAM หรือบทบาทที่กำหนดเองซึ่งผู้ใช้สร้างขึ้น

สำหรับทรัพยากร Google Cloud บางประเภท binding ยังระบุ condition ได้ด้วย ซึ่งเป็นนิพจน์เชิงตรรกะที่อนุญาตให้เข้าถึงทรัพยากรได้ก็ต่อเมื่อนิพจน์ประเมินเป็น true เงื่อนไขสามารถเพิ่มข้อจำกัดตามแอตทริบิวต์ของคำขอ ทรัพยากร หรือทั้ง 2 อย่าง ดูว่าทรัพยากรใดรองรับเงื่อนไขในนโยบาย 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 คุณต้องรวมฟิลด์ etag ทุกครั้งที่เรียกใช้ setIamPolicy หากคุณละเว้นฟิลด์นี้ IAM จะอนุญาตให้คุณเขียนทับนโยบายเวอร์ชัน 3 ด้วยนโยบายเวอร์ชัน 1 และเงื่อนไขทั้งหมดในนโยบายเวอร์ชัน 3 จะหายไป

หากนโยบายไม่มีเงื่อนไขใดๆ การดำเนินการกับนโยบายนั้นอาจระบุเวอร์ชันที่ถูกต้องหรือปล่อยให้ช่องไม่ได้ตั้งค่า

ดูว่าทรัพยากรใดรองรับเงื่อนไขในนโยบาย IAM ได้ที่เอกสารประกอบ IAM

bindings[]

object (Binding)

เชื่อมโยงรายการ members หรือผู้ใช้หลักกับ role อาจระบุ condition ที่กำหนดวิธีการและเวลาที่ใช้ bindings (ไม่บังคับ) bindings แต่ละรายการต้องมีหลักการอย่างน้อย 1 ข้อ

bindingsใน Policy สามารถอ้างอิงผู้รับมอบสิทธิ์ได้สูงสุด 1,500 ราย โดยผู้รับมอบสิทธิ์เหล่านี้เป็นกลุ่ม Google ได้สูงสุด 250 กลุ่ม การเกิดแต่ละครั้งของหลักการจะนับรวมอยู่ในขีดจํากัดเหล่านี้ ตัวอย่างเช่น หากbindingsให้สิทธิ์ 50 บทบาทที่แตกต่างกันแก่ user:alice@example.com และไม่ได้ให้สิทธิ์แก่ผู้ใช้รายอื่น คุณจะเพิ่มผู้ใช้รายอื่นอีก 1,450 รายลงใน bindings ใน Policy ได้

etag

string (bytes format)

etag ใช้สำหรับการควบคุมการทำงานพร้อมกันแบบมองโลกในแง่ดีเพื่อช่วยป้องกันไม่ให้การอัปเดตนโยบายพร้อมกันเขียนทับกัน เราขอแนะนำอย่างยิ่งให้ระบบใช้ etag ในวงจรการอ่าน-แก้ไข-เขียนเพื่ออัปเดตนโยบายเพื่อหลีกเลี่ยงการแข่งขัน: ระบบจะส่งคืน etag ในการตอบกลับ getIamPolicy และคาดว่าระบบจะใส่ ETag นั้นในคำขอไปยัง setIamPolicy เพื่อให้แน่ใจว่าการเปลี่ยนแปลงจะนำไปใช้กับนโยบายเวอร์ชันเดียวกัน

สำคัญ: หากใช้เงื่อนไข IAM คุณต้องรวมฟิลด์ etag ทุกครั้งที่เรียกใช้ setIamPolicy หากคุณละเว้นฟิลด์นี้ IAM จะอนุญาตให้คุณเขียนทับนโยบายเวอร์ชัน 3 ด้วยนโยบายเวอร์ชัน 1 และเงื่อนไขทั้งหมดในนโยบายเวอร์ชัน 3 จะหายไป

สตริงที่เข้ารหัส Base64