หน้านี้จะแสดงวิธีใช้ข้อจำกัดที่กำหนดเองของบริการนโยบายองค์กร Google Cloud เพื่อจำกัดการดำเนินการบางอย่างในทรัพยากร Cloud Storage for Firebase ต่อไปนี้
firebasestorage.googleapis.com/DefaultBucket
ดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบายองค์กรได้ที่นโยบายองค์กรที่กำหนดเอง
เกี่ยวกับนโยบายและข้อจำกัดขององค์กร
บริการนโยบายองค์กรของ Google Cloud ช่วยให้คุณควบคุมทรัพยากรขององค์กรแบบเป็นโปรแกรมจากส่วนกลางได้ ในฐานะผู้ดูแลระบบนโยบายองค์กร คุณสามารถกำหนดนโยบายองค์กร ซึ่งเป็นชุดข้อจำกัดที่เรียกว่าข้อจำกัดที่ใช้กับทรัพยากร Google Cloud และทรัพยากรที่สืบทอดมาจากทรัพยากรเหล่านั้นในลำดับชั้นของทรัพยากร Google Cloud คุณสามารถบังคับใช้นโยบายขององค์กรที่ระดับองค์กร โฟลเดอร์ หรือโปรเจ็กต์
นโยบายองค์กรมีข้อจำกัดที่มีการจัดการในตัวสำหรับบริการต่างๆ ของ Google Cloud อย่างไรก็ตาม หากต้องการควบคุมช่องที่ถูกจำกัดในนโยบายขององค์กรอย่างละเอียดยิ่งขึ้นและปรับแต่งได้ คุณยังสามารถสร้างข้อจำกัดที่กำหนดเองและใช้ข้อจำกัดที่กำหนดเองเหล่านั้นในนโยบายขององค์กรได้ด้วย
การรับค่าของนโยบาย
โดยค่าเริ่มต้น นโยบายองค์กรจะรับค่ามาจากทรัพยากรย่อยของทรัพยากรที่คุณบังคับใช้นโยบาย ตัวอย่างเช่น หากคุณบังคับใช้นโยบายกับโฟลเดอร์ Google Cloud จะบังคับใช้นโยบายกับโปรเจ็กต์ทั้งหมดในโฟลเดอร์นั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับลักษณะการทำงานนี้และวิธีเปลี่ยนแปลงได้ที่กฎการประเมินลำดับชั้น
นอกจากนี้ เนื่องจาก Cloud Storage for Firebase จัดเก็บไฟล์ไว้ในที่เก็บข้อมูล Cloud Storage ที่สำคัญ นโยบายองค์กรหรือข้อจำกัดที่กำหนดเองที่บังคับใช้กับทรัพยากร Cloud Storage จึงมีผลกับที่เก็บข้อมูล Cloud Storage for Firebase ด้วย
ข้อดี
- การรักษาความปลอดภัยและการกำกับดูแล: บังคับใช้การควบคุมองค์กรแบบรวมศูนย์สำหรับการจัดสรรบักเก็ต Cloud Storage เพื่อให้เป็นไปตามข้อกำหนดด้านถิ่นที่อยู่ของข้อมูลและแนวทางป้องกันการจัดการค่าใช้จ่าย
- การควบคุมแอตทริบิวต์แบบละเอียด: จำกัดการสร้างที่เก็บข้อมูลเริ่มต้นตามแอตทริบิวต์ทรัพยากรที่เฉพาะเจาะจง เช่น
storageClassหรือlocation
ข้อจำกัด
ข้อจำกัดต่อไปนี้จะมีผลเมื่อใช้นโยบายองค์กรที่กำหนดเองกับ Cloud Storage for Firebase
- ไม่มีการบังคับใช้ย้อนหลัง: ข้อจำกัดที่กำหนดเองที่บังคับใช้ใหม่จะไม่มีผลกับทรัพยากรที่มีอยู่ ระบบจะไม่ประเมินที่เก็บข้อมูลเริ่มต้นที่มีอยู่ เว้นแต่จะมีการอัปเดต หากต้องการระบุทรัพยากรที่มีอยู่ซึ่งอาจละเมิดข้อจำกัด คุณสามารถทดสอบนโยบายโดยใช้โหมดทดลองใช้
- ข้อจำกัดการควบคุมการเข้าถึง: ข้อจำกัดที่กำหนดเองไม่สามารถจำกัดรายการควบคุมการเข้าถึง (ACL) หรือนโยบาย IAM ในที่เก็บข้อมูลได้
ก่อนเริ่มต้น
ในคอนโซล Firebase ให้เลือกหรือสร้างโปรเจ็กต์ Firebase
ตรวจสอบว่าโปรเจ็กต์เป็นส่วนหนึ่งขององค์กรและคุณทราบรหัสองค์กร
หากต้องการตั้งค่าและบังคับใช้ข้อจำกัดที่กำหนดเองโดยใช้บรรทัดคำสั่ง ให้ติดตั้ง Google Cloud CLI (
gcloud) คุณไม่สามารถจัดการนโยบายองค์กรที่กำหนดเองโดยใช้ Firebase CLI ได้
บทบาทที่จำเป็น
หากต้องการรับสิทธิ์ที่จำเป็นในการจัดการนโยบายองค์กรที่กำหนดเอง โปรดขอให้ผู้ดูแลระบบมอบบทบาท IAM ผู้ดูแลระบบนโยบายองค์กร (roles/orgpolicy.policyAdmin) ในองค์กรให้คุณ
แหล่งข้อมูลที่รองรับ Cloud Storage for Firebase รายการ
ตารางต่อไปนี้แสดงรายการทรัพยากร Cloud Storage for Firebase ที่คุณสามารถอ้างอิงในข้อจำกัดที่กำหนดเองได้ นอกจากนี้ คุณยังดูแหล่งข้อมูลที่รองรับของ Cloud Storage ได้ด้วย เนื่องจากข้อจำกัดที่กำหนดเองในแหล่งข้อมูลเหล่านั้นจะมีผลกับบักเก็ต Cloud Storage for Firebase ด้วย
| ทรัพยากร | ฟิลด์ที่รองรับ |
|---|---|
firebasestorage.googleapis.com/DefaultBucket |
|
ตั้งค่าข้อจำกัดที่กำหนดเอง
ข้อจำกัดที่กำหนดเองจะกำหนดไว้ในไฟล์ YAML โดยทรัพยากร เมธอด เงื่อนไข และการดำเนินการที่รองรับโดยบริการที่คุณบังคับใช้นโยบายขององค์กร เงื่อนไขสำหรับข้อจำกัดที่กำหนดเองจะกำหนดโดยใช้ Common Expression Language (CEL) ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างเงื่อนไขในข้อจำกัดที่กำหนดเองโดยใช้ CEL ได้ที่ส่วน CEL ของการสร้างและจัดการข้อจำกัดที่กำหนดเอง
คอนโซล
หากต้องการสร้างข้อจำกัดที่กำหนดเอง ให้ทำดังนี้
- ในคอนโซล Google Cloud ให้ไปที่หน้านโยบายขององค์กร
- จากเครื่องมือเลือกโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการตั้งค่านโยบายขององค์กร
- คลิก ข้อจำกัดที่กำหนดเอง
- ในช่องชื่อที่แสดง ให้ป้อนชื่อที่มนุษย์อ่านได้สำหรับข้อจำกัด ชื่อนี้จะใช้ในข้อความแสดงข้อผิดพลาด และใช้เพื่อระบุและแก้ไขข้อบกพร่องได้ อย่าใช้ข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ (PII) หรือข้อมูลที่ละเอียดอ่อนในชื่อที่แสดง เนื่องจากชื่อนี้อาจปรากฏในข้อความแสดงข้อผิดพลาด ช่องนี้มีอักขระได้สูงสุด 200 ตัว
- ในช่องรหัสข้อจำกัด ให้ป้อนรหัสที่ต้องการสำหรับข้อจำกัดที่กำหนดเองใหม่ ข้อจำกัดที่กำหนดเองต้องมีเฉพาะตัวอักษร (รวมถึงตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก) หรือตัวเลขเท่านั้น เช่น
custom.restrictStorageClassช่องนี้มีอักขระได้สูงสุด 70 ตัว โดยไม่นับคำนำหน้า (custom.) เช่นorganizations/123456789/customConstraints/custom.restrictStorageClassอย่าใส่ PII หรือข้อมูลที่ละเอียดอ่อนในรหัสข้อจำกัด เนื่องจากอาจมีการเปิดเผยข้อมูลดังกล่าวในข้อความแสดงข้อผิดพลาด - ในช่องคำอธิบาย ให้ป้อนคำอธิบายข้อจำกัดที่มนุษย์อ่านได้ ระบบจะใช้คำอธิบายนี้เป็นข้อความแสดงข้อผิดพลาดเมื่อมีการละเมิดนโยบาย ระบุรายละเอียดเกี่ยวกับสาเหตุที่เกิดการละเมิดนโยบายและวิธีแก้ไขการละเมิดนโยบาย อย่าใส่ PII หรือข้อมูลที่ละเอียดอ่อนในคำอธิบาย เนื่องจากอาจมีการเปิดเผยข้อมูลดังกล่าวในข้อความแสดงข้อผิดพลาด ช่องนี้มีอักขระได้สูงสุด 2,000 ตัว
- ในช่องประเภททรัพยากร ให้เลือกชื่อทรัพยากร REST ที่มีออบเจ็กต์และช่องที่ต้องการจำกัด เช่น
firebasestorage.googleapis.com/DefaultBucketทรัพยากรส่วนใหญ่รองรับข้อจำกัดที่กำหนดเองได้สูงสุด 20 รายการ หากพยายามสร้างข้อจำกัดที่กำหนดเองมากกว่านี้ การดำเนินการจะล้มเหลว - ในส่วนวิธีการบังคับใช้ ให้เลือกว่าจะบังคับใช้ข้อจำกัดกับเมธอด REST
CREATEหรือทั้งเมธอดCREATEและUPDATE(หมายเหตุ:DefaultBucketรองรับเฉพาะCREATE) - หากต้องการกำหนดเงื่อนไข ให้คลิก แก้ไขเงื่อนไข
- ในแผงเพิ่มเงื่อนไข ให้สร้างเงื่อนไข CEL ที่อ้างอิงถึงทรัพยากรบริการที่รองรับ เช่น
resource.storageClass == 'STANDARD'ช่องนี้มีอักขระได้สูงสุด 1,000 ตัว โปรดดูรายละเอียดเกี่ยวกับการใช้งาน CEL ที่หัวข้อ Common Expression Language - คลิกบันทึก
- ในแผงเพิ่มเงื่อนไข ให้สร้างเงื่อนไข CEL ที่อ้างอิงถึงทรัพยากรบริการที่รองรับ เช่น
- ในส่วนการดำเนินการ ให้เลือกว่าจะอนุญาตหรือปฏิเสธวิธีการที่ประเมินหากตรงตามเงื่อนไข
การดำเนินการปฏิเสธหมายความว่าระบบจะบล็อกการดำเนินการเพื่อสร้างหรืออัปเดตทรัพยากรหากเงื่อนไขประเมินเป็น "จริง"
การดำเนินการอนุญาตหมายความว่าการดำเนินการเพื่อสร้างหรืออัปเดตทรัพยากรจะได้รับอนุญาตก็ต่อเมื่อเงื่อนไขได้รับการประเมินว่าเป็นจริง ระบบจะบล็อกกรณีอื่นๆ ทั้งหมด ยกเว้นกรณีที่ระบุไว้อย่างชัดเจนในเงื่อนไข
- คลิกสร้างข้อจำกัด
gcloud
- หากต้องการสร้างข้อจำกัดที่กำหนดเอง ให้สร้างไฟล์ YAML โดยใช้รูปแบบต่อไปนี้
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass resourceTypes: firebasestorage.googleapis.com/DefaultBucket methodTypes: - CREATE condition: "resource.storageClass == 'STANDARD'" actionType: DENY displayName: Restrict Standard Storage Class description: Deny creating buckets with STANDARD storage class.
- หลังจากสร้างไฟล์ YAML สำหรับข้อจำกัดที่กำหนดเองใหม่แล้ว คุณต้องตั้งค่าไฟล์ดังกล่าวเพื่อให้พร้อมใช้งานสำหรับนโยบายขององค์กรในองค์กรของคุณ หากต้องการตั้งค่าข้อจำกัดที่กำหนดเอง ให้ใช้คำสั่ง
gcloud org-policies set-custom-constraintดังนี้gcloud org-policies set-custom-constraint CONSTRAINT_PATH
แทนที่
CONSTRAINT_PATHด้วยเส้นทางแบบเต็มไปยังไฟล์ข้อจำกัดที่กำหนดเอง เช่น/home/user/customconstraint.yaml - หากต้องการยืนยันว่ามีข้อจำกัดที่กำหนดเองอยู่ ให้ใช้คำสั่ง
gcloud org-policies list-custom-constraintsดังนี้gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
บังคับใช้นโยบายองค์กรที่กำหนดเอง
คุณสามารถบังคับใช้ข้อจำกัดได้โดยการสร้างนโยบายองค์กรที่อ้างอิงข้อจำกัดดังกล่าว แล้วใช้นโยบายองค์กรนั้นกับทรัพยากร Google Cloud
คอนโซล
- ในคอนโซล Google Cloud ให้ไปที่หน้านโยบายขององค์กร
- จากเครื่องมือเลือกโปรเจ็กต์ ให้เลือกโปรเจ็กต์ที่ต้องการตั้งค่านโยบายขององค์กร
- จากรายการในหน้านโยบายขององค์กร ให้เลือกข้อจำกัดเพื่อดูหน้ารายละเอียดนโยบายสำหรับข้อจำกัดนั้น
- หากต้องการกำหนดค่านโยบายองค์กรสำหรับทรัพยากรนี้ ให้คลิกจัดการนโยบาย
- ในหน้าแก้ไขนโยบาย ให้เลือกลบล้างนโยบายของระดับบน
- คลิกเพิ่มกฎ
- ในส่วนการบังคับใช้ ให้เลือกว่าจะบังคับใช้นโยบายองค์กรนี้หรือไม่
- หากต้องการบังคับใช้นโยบายองค์กรในโหมดทดลองเรียกใช้ ให้คลิกกำหนดนโยบายทดลองเรียกใช้ ดูข้อมูลเพิ่มเติมได้ที่ทดสอบนโยบายขององค์กร
- หลังจากยืนยันว่านโยบายขององค์กรในโหมดทดลองใช้ทำงานได้ตามที่ต้องการแล้ว ให้ตั้งค่านโยบายที่ใช้งานจริงโดยคลิกตั้งค่านโยบาย
gcloud
- หากต้องการสร้างนโยบายองค์กรที่มีกฎบูลีน ให้สร้างไฟล์ YAML ของนโยบายที่อ้างอิงข้อจำกัดดังนี้
name: projects/PROJECT_ID/policies/custom.restrictStorageClass spec: rules: - enforce: true dryRunSpec: rules: - enforce: true
- หากต้องการบังคับใช้นโยบายขององค์กรในโหมดทดลองใช้ ให้เรียกใช้คำสั่งต่อไปนี้พร้อมกับแฟล็ก
dryRunSpecgcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec
- หลังจากยืนยันว่านโยบายขององค์กรในโหมดทดลองใช้ทำงานได้ตามที่ต้องการแล้ว ให้ตั้งค่านโยบายที่ใช้งานอยู่ด้วยคำสั่ง
org-policies set-policyและแฟล็กspecดังนี้gcloud org-policies set-policy POLICY_PATH --update-mask=spec
ทดสอบนโยบายองค์กรที่กำหนดเอง
ตัวอย่างต่อไปนี้จะสร้างข้อจำกัดและนโยบายที่กำหนดเองซึ่งกำหนดให้บักเก็ตเริ่มต้นที่สร้างขึ้นใหม่ทั้งหมดหลีกเลี่ยงการใช้คลาสพื้นที่เก็บข้อมูล STANDARD คุณสามารถทดสอบนโยบายได้โดยลองดำเนินการที่นโยบายควรป้องกัน
สร้างข้อจำกัด
บันทึกไฟล์ต่อไปนี้เป็น
constraint-restrict-storage-class.yamlname: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass resourceTypes: - firebasestorage.googleapis.com/DefaultBucket methodTypes: - CREATE condition: "resource.storageClass == 'STANDARD'" actionType: DENY displayName: Restrict Standard Storage Class description: Deny creating buckets with STANDARD storage class.แทนที่
ORGANIZATION_IDด้วยรหัสองค์กรใช้ข้อจำกัดต่อไปนี้
gcloud org-policies set-custom-constraint ~/constraint-restrict-storage-class.yamlยืนยันว่ามีข้อจำกัดอยู่ โดยทำดังนี้
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_IDเอาต์พุตจะคล้ายกับตัวอย่างต่อไปนี้
CUSTOM_CONSTRAINT ACTION_TYPE METHOD_TYPES RESOURCE_TYPES DISPLAY_NAME custom.restrictStorageClass DENY CREATE firebasestorage.googleapis.com/DefaultBucket Restrict Standard Storage Class ...
สร้างนโยบาย
บันทึกไฟล์ต่อไปนี้เป็น
policy-restrict-storage-class.yamlname: projects/PROJECT_ID/policies/custom.restrictStorageClass spec: rules: - enforce: trueแทนที่
PROJECT_IDด้วยรหัสโปรเจ็กต์ใช้นโยบายโดยทำดังนี้
gcloud org-policies set-policy ~/policy-restrict-storage-class.yamlตรวจสอบว่ามีนโยบายอยู่โดยทำดังนี้
gcloud org-policies list --project=PROJECT_IDเอาต์พุตจะคล้ายกับตัวอย่างต่อไปนี้
CONSTRAINT LIST_POLICY BOOLEAN_POLICY ETAG custom.restrictStorageClass - SET CIqktscGELiZn6cC-
หลังจากใช้นโยบายแล้ว ให้รอประมาณ 2 นาทีเพื่อให้ Google Cloud เริ่มบังคับใช้นโยบาย
ทดสอบนโยบาย
ลองสร้างที่เก็บข้อมูลเริ่มต้นโดยใช้ Cloud Storage for Firebase REST API โดยไม่ระบุคลาสพื้นที่เก็บข้อมูล (ซึ่งค่าเริ่มต้นคือ STANDARD)
PROJECT_ID="PROJECT_ID"
TOKEN=$(gcloud auth print-access-token)
curl -X POST "https://firebasestorage.googleapis.com/v1beta/projects/${PROJECT_ID}/defaultBucket" \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"location": "US-EAST1"}'
คำขอไม่สำเร็จโดยมีข้อผิดพลาดคล้ายกับข้อความต่อไปนี้
FAILED_PRECONDITION: Operation denied by org policy: ["customConstraints/custom.restrictStorageClass": "Deny creating buckets with STANDARD storage class."].
- '@type': type.googleapis.com/google.rpc.ErrorInfo
domain: iam.googleapis.com
metadata:
customConstraints: customConstraints/custom.restrictStorageClass
reason: CUSTOM_ORG_POLICY_VIOLATION
ตัวอย่างนโยบายองค์กรที่กำหนดเองสำหรับกรณีการใช้งานทั่วไป
ตารางนี้แสดงตัวอย่างไวยากรณ์สำหรับข้อจำกัดที่กำหนดเองที่พบบ่อยบางรายการ
| คำอธิบาย | ไวยากรณ์ของข้อจำกัด |
|---|---|
| จำกัดการสร้างที่เก็บข้อมูลเริ่มต้นด้วยคลาสพื้นที่เก็บข้อมูลมาตรฐาน |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictStorageClass resourceTypes: - firebasestorage.googleapis.com/DefaultBucket methodTypes: - CREATE condition: "resource.storageClass == 'STANDARD'" actionType: DENY displayName: Restrict Standard Storage Class description: Deny creating buckets with STANDARD storage class. |
| กำหนดให้สร้างที่เก็บข้อมูลเริ่มต้นในตำแหน่งที่เจาะจง |
name: organizations/ORGANIZATION_ID/customConstraints/custom.requireDefaultBucketLocation resourceTypes: - firebasestorage.googleapis.com/DefaultBucket methodTypes: - CREATE condition: "resource.location != 'US-EAST1'" actionType: DENY displayName: Require US-EAST1 Location description: Deny creating default buckets outside the US-EAST1 location. |
ขั้นตอนถัดไป
- ดูข้อมูลเพิ่มเติมเกี่ยวกับบริการนโยบายองค์กร
- ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีสร้างและจัดการนโยบายขององค์กร
- ดูรายการข้อจำกัดของนโยบายองค์กรที่มีการจัดการทั้งหมด