Özel kuruluş politikası kısıtlamaları

Bu sayfada, aşağıdaki Cloud Storage for Firebase kaynaklarında belirli işlemleri kısıtlamak için Google Cloud Kuruluş Politikası Hizmeti özel kısıtlamalarının nasıl kullanılacağı gösterilmektedir:

  • firebasestorage.googleapis.com/DefaultBucket

Kuruluş Politikası hakkında daha fazla bilgi edinmek için Özel kuruluş politikaları başlıklı makaleyi inceleyin.

Kuruluş politikaları ve kısıtlamaları hakkında

Google Cloud Organization Policy Service, kuruluşunuzun kaynakları üzerinde merkezi ve programatik kontrol sağlar. Kuruluş politikası yöneticisi olarak, Google Cloud kaynak hiyerarşisindeki Google Cloud kaynaklarına ve bu kaynakların alt öğelerine uygulanan kısıtlamalar adlı bir kısıtlama grubu olan kuruluş politikasını tanımlayabilirsiniz. Kuruluş politikalarını kuruluş, klasör veya proje düzeyinde uygulayabilirsiniz.

Kuruluş Politikası, çeşitli Google Cloud hizmetleri için yerleşik yönetilen kısıtlamalar sunar. Ancak kuruluş politikalarınızda kısıtlanan belirli alanlar üzerinde daha ayrıntılı ve özelleştirilebilir bir kontrol istiyorsanız özel kısıtlamalar oluşturabilir ve bu özel kısıtlamaları bir kuruluş politikasında kullanabilirsiniz.

Politika devralma

Varsayılan olarak kuruluş politikaları, politikayı uyguladığınız kaynakların alt öğeleri tarafından devralınır. Örneğin, bir klasörde politika uygularsanız Google Cloud, politikayı klasördeki tüm projelere uygular. Bu davranış ve nasıl değiştirileceği hakkında daha fazla bilgi edinmek için Hiyerarşi değerlendirme kuralları başlıklı makaleyi inceleyin.

Ayrıca Cloud Storage for Firebase, dosyaları temel Cloud Storage paketlerinde depoladığı için Cloud Storage kaynaklarına uygulanan tüm kuruluş politikaları veya özel kısıtlamalar Cloud Storage for Firebase paketleriniz için de geçerlidir.

Avantajları

  • Güvenlik ve yönetim: Veri barındırma ve maliyet yönetimiyle ilgili kurallara uyulmasını sağlamak için paket temel hazırlığı üzerinde merkezi kurumsal kontrolü zorunlu kılın.Cloud Storage
  • Ayrıntılı özellik kontrolü: storageClass veya location gibi belirli kaynak özelliklerine göre varsayılan paket oluşturma işlemini kısıtlayın.

Sınırlamalar

Cloud Storage for Firebase ile özel kuruluş politikaları kullanılırken aşağıdaki sınırlamalar geçerlidir:

  • Geçmişe dönük yaptırım yok: Yeni uygulanan özel kısıtlamalar mevcut kaynaklar için geçerli değildir. Mevcut varsayılan paketler güncellenmedikleri sürece değerlendirilmez. Bir kısıtlamayı ihlal edebilecek mevcut kaynakları belirlemek için deneme modunu kullanarak politikaları test edebilirsiniz.
  • Erişim denetimi kısıtlamaları: Özel kısıtlamalar, paketlerdeki erişim denetimi listelerini (ACL'ler) veya IAM politikalarını kısıtlayamaz.

Başlamadan önce

  1. Firebase konsolunda bir Firebase projesi seçin veya oluşturun.

    Projenizin bir kuruluşun parçası olduğundan ve kuruluş kimliğinizi bildiğinizden emin olun.

  2. Komut satırını kullanarak özel kısıtlamalar oluşturmak ve uygulamak için Google Cloud CLI'yı yükleyin (gcloud). Özel kuruluş politikaları, Firebase CLI kullanılarak yönetilemez.

Gerekli roller

Özel kuruluş politikalarını yönetmek için gereken izinleri almak üzere yöneticinizden size kuruluşta Kuruluş Politikası Yöneticisi (roles/orgpolicy.policyAdmin) IAM rolünü vermesini isteyin.

Cloud Storage for Firebase desteklenen kaynak

Aşağıdaki tabloda, özel kısıtlamalarda referans verebileceğiniz Cloud Storage for Firebase kaynakları listelenmiştir. Bu kaynaklardaki özel kısıtlamalar Cloud Storage for Firebase paketleri için de geçerli olduğundan Cloud Storage desteklenen kaynaklara da başvurabilirsiniz.

Kaynak Desteklenen alanlar
firebasestorage.googleapis.com/DefaultBucket
  • resource.location
  • resource.storageClass

Özel kısıtlama oluşturma

Özel kısıtlama, kuruluş politikasını uyguladığınız hizmet tarafından desteklenen kaynaklar, yöntemler, koşullar ve işlemlerle bir YAML dosyasında tanımlanır. Özel kısıtlamalarınızın koşulları, Common Expression Language (CEL) kullanılarak tanımlanır. CEL kullanarak özel kısıtlamalarda koşul oluşturma hakkında daha fazla bilgi için Özel kısıtlama oluşturma ve yönetme başlıklı makalenin CEL bölümüne bakın.

Konsol

Özel kısıtlama oluşturmak için aşağıdakileri yapın:

  1. Google Cloud konsolunda Kuruluş politikaları sayfasına gidin.

    Kuruluş politikalarına git

  2. Proje seçiciden, kuruluş politikasını ayarlamak istediğiniz projeyi seçin.
  3. Özel kısıtlama'yı tıklayın.
  4. Görünen ad kutusuna kısıtlama için okunabilir bir ad girin. Bu ad, hata mesajlarında kullanılır ve tanımlama ile hata ayıklama için kullanılabilir. Görünen adlarda kişisel veri (PII) veya hassas veriler kullanmayın. Bu ad, hata mesajlarında açığa çıkabilir. Bu alan en fazla 200 karakter içerebilir.
  5. Kısıtlama kimliği kutusuna yeni özel kısıtlamanız için istediğiniz kimliği girin. Özel kısıtlamalar yalnızca harf (büyük ve küçük harfler dahil) veya sayı içerebilir (ör. custom.restrictStorageClass). Bu alan, önek (custom.) hariç en fazla 70 karakter içerebilir (ör. organizations/123456789/customConstraints/custom.restrictStorageClass). Hata mesajlarında gösterilebileceğinden kısıtlama kimliğinize kimliği tanımlayabilecek bilgiler veya hassas veriler eklemeyin.
  6. Açıklama kutusuna kısıtlamanın kullanıcıların okuyabileceği bir açıklamasını girin. Bu açıklama, politika ihlal edildiğinde hata mesajı olarak kullanılır. Politika ihlalinin neden gerçekleştiği ve nasıl çözüleceğiyle ilgili ayrıntıları ekleyin. Hata mesajlarında gösterilebileceğinden açıklamanıza kimliği tanımlayabilecek bilgiler veya hassas veriler eklemeyin. Bu alan en fazla 2.000 karakter içerebilir.
  7. Kaynak türü kutusunda, kısıtlamak istediğiniz nesneyi ve alanı içeren REST kaynağının adını (ör. firebasestorage.googleapis.com/DefaultBucket) seçin. Çoğu kaynak türü en fazla 20 özel kısıtlamayı destekler. Daha fazla özel kısıtlama oluşturmaya çalışırsanız işlem başarısız olur.
  8. Zorunlu kılma yöntemi bölümünde, kısıtlamanın bir REST CREATE yönteminde mi yoksa hem CREATE hem de UPDATE yöntemlerinde mi zorunlu kılınacağını seçin. (Not: DefaultBucket yalnızca CREATE destekler).
  9. Koşul tanımlamak için Koşulu düzenle'yi tıklayın.
    1. Koşul ekle panelinde, desteklenen bir hizmet kaynağına (ör. resource.storageClass == 'STANDARD') başvuran bir CEL koşulu oluşturun. Bu alan en fazla 1.000 karakter içerebilir. CEL kullanımıyla ilgili ayrıntılar için Common Expression Language başlıklı makaleyi inceleyin.
    2. Kaydet'i tıklayın.
  10. İşlem bölümünde, koşul karşılanırsa değerlendirilen yönteme izin verilip verilmeyeceğini veya yöntemin reddedilip reddedilmeyeceğini seçin.

    Reddetme işlemi, koşul doğru olarak değerlendirilirse kaynağı oluşturma veya güncelleme işleminin engellendiği anlamına gelir.

    İzin verme işlemi, kaynağı oluşturma veya güncelleme işlemine yalnızca koşul doğru olarak değerlendirildiğinde izin verildiği anlamına gelir. Koşulda açıkça listelenenler dışındaki tüm durumlar engellenir.

  11. Kısıtlama oluştur'u tıklayın.

gcloud

  1. Özel kısıtlama oluşturmak için aşağıdaki biçimi kullanarak bir YAML dosyası oluşturun:
    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.
  2. Yeni bir özel kısıtlama için YAML dosyasını oluşturduktan sonra, kısıtlamayı kuruluşunuzdaki kuruluş politikalarında kullanılabilir hale getirmek için ayarlamanız gerekir. Özel kısıtlama oluşturmak için gcloud org-policies set-custom-constraint komutunu kullanın:
    gcloud org-policies set-custom-constraint CONSTRAINT_PATH

    CONSTRAINT_PATH ifadesini özel kısıtlama dosyanızın tam yoluyla değiştirin. Örneğin, /home/user/customconstraint.yaml.

  3. Özel kısıtlamanın mevcut olduğunu doğrulamak için gcloud org-policies list-custom-constraints komutunu kullanın:
    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID

Özel bir kuruluş politikasını zorunlu kılma

Kısıtlamayı zorunlu kılmak için kısıtlamaya referans veren bir kuruluş politikası oluşturup bu politikayı bir Google Cloud kaynağına uygulayabilirsiniz.

Konsol

  1. Google Cloud konsolunda Kuruluş politikaları sayfasına gidin.

    Kuruluş politikalarına git

  2. Proje seçiciden, kuruluş politikasını ayarlamak istediğiniz projeyi seçin.
  3. Kuruluş politikaları sayfasındaki listeden kısıtlamanızı seçerek ilgili kısıtlamanın Politika ayrıntıları sayfasını görüntüleyin.
  4. Bu kaynağın kuruluş politikasını yapılandırmak için Politikayı yönet'i tıklayın.
  5. Politikayı düzenle sayfasında Üst kaynağın politikasını geçersiz kıl'ı seçin.
  6. Add a rule'u (Kural ekle) tıklayın.
  7. Yaptırım bölümünde, bu kuruluş politikasının uygulanıp uygulanmayacağını seçin.
  8. Kuruluş politikasını prova modunda uygulamak için Prova politikası ayarla'yı tıklayın. Daha fazla bilgi için Kuruluş politikalarını test etme başlıklı makaleyi inceleyin.
  9. Deneme modundaki kuruluş politikasının amaçlandığı şekilde çalıştığını doğruladıktan sonra Politikayı ayarla'yı tıklayarak canlı politikayı ayarlayın.

gcloud

  1. Boole kuralları içeren bir kuruluş politikası oluşturmak için kısıtlamaya referans veren bir politika YAML dosyası oluşturun:
    name: projects/PROJECT_ID/policies/custom.restrictStorageClass
    spec:
      rules:
      -   enforce: true
    dryRunSpec:
      rules:
      -   enforce: true
  2. Kuruluş politikasını deneme modunda uygulamak için aşağıdaki komutu dryRunSpec işaretiyle çalıştırın:
    gcloud org-policies set-policy POLICY_PATH --update-mask=dryRunSpec
  3. Kuruluş politikasının deneme modunda amaçlandığı gibi çalıştığını doğruladıktan sonra org-policies set-policy komutu ve spec işaretiyle canlı politikayı ayarlayın:
    gcloud org-policies set-policy POLICY_PATH --update-mask=spec

Özel kuruluş politikasını test etme

Aşağıdaki örnekte, yeni oluşturulan tüm varsayılan paketlerin STANDARD depolama sınıfını kullanmasını engelleyen özel bir kısıtlama ve politika oluşturulmaktadır. Politikanın engellemesi gereken bir işlemi yapmayı deneyerek politikayı test edebilirsiniz.

Kısıtlamayı oluşturma

  1. Aşağıdaki dosyayı constraint-restrict-storage-class.yaml olarak kaydedin:

    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.
    

    ORGANIZATION_ID yerine kuruluş kimliğinizi yazın.

  2. Kısıtlamayı uygulayın:

    gcloud org-policies set-custom-constraint ~/constraint-restrict-storage-class.yaml
    
  3. Kısıtlamanın mevcut olduğunu doğrulayın:

    gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
    

    Çıkış şuna benzer:

    CUSTOM_CONSTRAINT            ACTION_TYPE   METHOD_TYPES   RESOURCE_TYPES                                 DISPLAY_NAME
    custom.restrictStorageClass  DENY          CREATE         firebasestorage.googleapis.com/DefaultBucket   Restrict Standard Storage Class
    ...
    

Politikayı oluşturma

  1. Aşağıdaki dosyayı policy-restrict-storage-class.yaml olarak kaydedin:

    name: projects/PROJECT_ID/policies/custom.restrictStorageClass
    spec:
      rules:
      -   enforce: true
    

    PROJECT_ID yerine proje kimliğinizi yazın.

  2. Politikayı uygulayın:

    gcloud org-policies set-policy ~/policy-restrict-storage-class.yaml
    
  3. Politikanın mevcut olduğunu doğrulayın:

    gcloud org-policies list --project=PROJECT_ID
    

    Çıkış şuna benzer:

    CONSTRAINT                   LIST_POLICY    BOOLEAN_POLICY    ETAG
    custom.restrictStorageClass  -              SET               CIqktscGELiZn6cC-
    

Politikayı uyguladıktan sonra Google Cloud uygulamasının politikayı uygulamaya başlaması için yaklaşık iki dakika bekleyin.

Politikayı test etme

Depolama sınıfı belirtmeden (varsayılan olarak STANDARD kullanılır) Cloud Storage for Firebase REST API'yi kullanarak varsayılan bir paket oluşturmayı deneyin:

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"}'

İstek, aşağıdakine benzer bir hatayla başarısız olur:

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

Yaygın kullanım alanları için örnek özel kuruluş politikaları

Bu tabloda, bazı yaygın özel kısıtlamalar için söz dizimi örnekleri verilmiştir.

Açıklama Kısıtlama söz dizimi
STANDARD depolama sınıfıyla varsayılan paket oluşturmayı kısıtlama
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.
Varsayılan paketlerin belirli bir konumda oluşturulmasını zorunlu kılma
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.

Sırada ne var?