本頁面由 Cloud Translation API 翻譯而成。
Switch to English

存儲安全規則入門

在典型的應用程序中,開發人員必須構建和維護許多服務器,這些服務器執行身份驗證,授權和數據驗證以及開發人員的業務邏輯。使用Cloud Storage for Firebase的應用程序使用Firebase身份驗證和Cloudbase的Firebase安全規則來處理無服務器身份驗證,授權和數據驗證。

使用雲存儲和存儲安全規則意味著您可以專注於構建出色的用戶體驗,而無需管理基礎架構或編寫複雜的服務器端身份驗證和授權代碼!

總覽

存儲安全規則用於確定誰擁有對Cloud Storage中存儲的文件的讀寫權限,以及文件的結構方式和包含的元數據。基本類型的規則是allow規則,這允許readwrite如果任選滿足指定的條件的操作。規則的一些示例是:

// Rules can optionally specify a condition
allow write: if <condition>;

規則match代表Cloud Storage引用的文件路徑。規則可以match一個或多個文件路徑,並且一個給定request可以有多個規則match文件路徑:

// Rules match specific paths
match /images/profilePhoto.png {
  allow write: if <condition>;
}

match /images/croppedProfilePhoto.png {
  allow write: if <other_condition>;
}

規則評估的上下文也通過requestresource對象公開,它們提供諸如auth上下文( request.auth )和現有對象的大小( resource.size )之類的信息。

// Rules can specify conditions that consider the request context
match /images/profilePhoto.png {
  allow write: if request.auth != null && request.resource.size < 5 * 1024 * 1024;
}

在“ 安全文件”部分中了解有關存儲安全規則的更多信息。

樣本規則

存儲安全規則必須首先指定service (在我們的示例中為firebase.storage ),然後指定要對其進行評估的Cloud Storage存儲桶(通過match /b/{bucket}/o )。默認規則需要Firebase身份驗證,但是以下是具有不同訪問控制的其他常見規則的一些示例。

默認

 // Only authenticated users can read or write to the bucket
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}
 

上市

 // Anyone can read or write to the bucket, even non-users of your app.
// Because it is shared with Google App Engine, this will also make
// files uploaded via GAE public.
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write;
    }
  }
}
 

用戶

 // Grants a user access to a node matching their user ID
service firebase.storage {
  match /b/{bucket}/o {
    // Files look like: "user/<UID>/path/to/file.txt"
    match /user/{userId}/{allPaths=**} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}
 

私人的

 // Access to files through Firebase Storage is completely disallowed.
// Files may still be accessible through Google App Engine or GCS APIs.
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}
 

在開發過程中,可以使用公共規則代替默認規則來設置文件公開可讀和可寫。這對於原型製作非常有用,因為您無需設置Firebase身份驗證即可開始使用。但是,由於Cloud Storage與您的默認Google App Engine應用程序共享存儲桶,因此此規則也將該應用程序使用的所有數據也公開。

用戶規則允許您為每個經過身份驗證的用戶提供自己的個人文件存儲。您還可以使用私有規則完全鎖定文件,但請注意,使用這些規則,用戶將無法通過Cloud Storage讀取或寫入任何內容。從您的Google App Engine應用程序或GCS API訪問文件的用戶仍然可以訪問。

編輯規則

Cloud Storage通過Firebase控制台“存儲”部分中的“規則”選項卡提供了一種輕鬆的方法來編輯存儲安全規則。在“ 規則”選項卡中,您可以快速輕鬆地查看和編輯當前規則。通過單擊“ 發布 ”或保存文件( ctrl/cmd + s ),可以部署這些規則。規則會立即上傳到Cloud Storage服務器,但是最多可能需要五分鐘才能生效。

Firebase CLI還可用於部署規則。如果您在運行firebase init時選擇“存儲”,則會在您的項目目錄中創建一個帶有默認規則副本的storage.rules文件。您可以使用firebase deploy命令部署這些規則。如果項目中有多個存儲桶,則可以使用部署目標將規則從同一項目文件夾一次部署到所有存儲桶。

在“ 安全文件”部分中了解有關基於文件的安全性如何工作的更多信息,或在“ 用戶安全性”部分中了解基於用戶的安全性