Cloud Storage용 Firebase 보안 규칙
보안 규칙
실시간 데이터베이스 규칙을 보거나 사용한 적이 있는 사람은 Firebase 콘솔의 저장소 규칙 탭에 액세스할 때 보안 규칙의 구조가 다르다는 것을 알 수 있습니다. 실시간 데이터베이스 규칙은 JSON 트리로 구성되는 반면 Cloud Storage 규칙은 따옴표 없이 JSON처럼 보이기 때문입니다.
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
이 조직은 Google Cloud Platform과 같은 일부 Cloud Firestore 서비스에서 사용됩니다. Realtime Database과 마찬가지로 Cloud Storage 보안 규칙을 사용하면 파일에 대한 읽기 및/또는 쓰기 작업을 제어할 수 있습니다. 또한 이러한 파일의 구조와 포함된 메타데이터를 제어할 수 있습니다.
Cloud Storage 보안 규칙을 사용하려면
allow
및 match
2개의 예약어를 알아야 합니다.허용하다
이름에서 알 수 있듯이
allow
는 지정된 조건(선택 사항)에 따라 연산( read
또는 write
)이 허용되는지 여부를 나타냅니다. 예를 들어:// If no condition is specified, the rule becomes true
allow read;
// Use the if word to specify a condition:
allow read: if <condition>;
// You can also use a single condition for reading and writing
allow read, write: if <condition>;
간단한 규칙
테스트를 위해 실시간 데이터베이스 규칙(
.write
및 .read
)을 모두 true
로 설정하여 데이터베이스가 완전히 안전하지 않은 경우를 기억하십니까? Cloud Storage에서 이에 상응하는 것은 다음과 같습니다.service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write;
}
}
}
참고: 이렇게 하면 스토리지가 공개되므로 누구나(애플리케이션 사용자가 아니더라도) 클라우드 스토리지에서 파일을 저장하고 검색할 수 있습니다. 이 규칙은 테스트용으로만 사용하십시오.
위의 예와 반대로 수행하려면 실시간 데이터베이스에서
.write
및 .read
를 false
에 넣습니다. 따라서 아무도(프로젝트 관리자를 제외하고) 데이터베이스에 액세스할 수 없습니다. Cloud Storage에서는 다음 규칙을 사용하여 이를 달성할 수 있습니다.service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if false;
}
}
}
실시간 데이터베이스에서 언제
auth!=null
를 사용했습니까? 등록된 Firebase 인증 사용자만 데이터베이스에 액세스할 수 있도록 허용했습니다. Cloud Storage에서 다음을 수행할 수도 있습니다.service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
성냥
아시다시피 지금까지 작성한 모든 규칙에서 일치라는 단어를 사용합니다. 각 규칙을 적용하려는 경로를 지정하는 역할을 합니다. 이 경로는 자세히 지정하거나(정확한 경로 및 정적 경로) 변수를 통해(동적 경로) 지정할 수 있습니다.
정확한 경로
이것은 규칙을 적용하려는 파일의 정확한 경로를 이미 알고 있을 때 사용되는 가장 간단한 일치입니다. 예를 들어,/images 디렉토리에 있는 profilePicture.png 및 thumbnail.png 파일에 규칙을 적용하려면 다음을 수행하십시오.
match /imagens/profilePicture.png {
allow write: if <condição>;
}
match /imagens/miniatura.png {
allow write: if <condição>;
}
또 다른 방법은 경로를 분할하여 트리에 분기를 만드는 것입니다.
match /imagens {
match /profilePicture.png {
allow write: if <condição>;
}
match /miniatura.png {
allow write: if <condição>;
}
}
동적 경로(변수 사용)
때때로 우리는 파일이나 디렉토리의 이름을 모를 수 있습니다. 이 경우 실시간 데이터베이스에서와 같이 변수를 사용하지만(달러 기호 $ 사용) 여기서는 변수 이름을 중괄호 안에 넣습니다. 예를 들어:
match /images {
//All images in the images directory.
match /{ImageName} {
allow read: if <condition>;
}
//All images in the images directory, including subdirectories
match /{allImages=**} {
allow read: if <other_condition>;
}
}
유효성 검사 규칙 사용
파일 저장 및 읽기 권한을 제어하는 것 외에도 Cloud Storage에 저장되는 파일의 유효성을 검사할 수도 있습니다. 이 기사를 너무 많이 확장하지 않기 위해 검증을 보여주기 위해 한 가지 예만 남길 것입니다.
match /{imageId} {
allow write: if request.resource.size < 2 * 1024 * 1024
&& request.resource.contentType.matches('image/.*')
}
위의 이 규칙을 사용하여 파일이 저장되는지 확인합니다.
이것은 Firebase용 Cloud Storage 규칙에 대한 간단한 소개였습니다. 즐거운 코딩하세요!
-
DISCORD 커뮤니티에 가입하세요
데이터를 안전하게 유지하는 데 도움이 되는 더 중요한 정보 및 추세는 join our community
Reference
이 문제에 관하여(Cloud Storage용 Firebase 보안 규칙), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/opedroaravena/firebase-security-rules-for-cloud-storage-bl3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)