Firebase를 통해서 쉽게 사용자를 인증할 수 있는것 처럼 cloud storage에 대한 firebase 보안 rule로 손쉽게 사용자를 승인하고 요청을 검증할 수 있다.
스토리지 보안 규칙을 사용하면 경로기반 권한을 지정하여 특정 사용자에게만 허용하거나 업로드 크기를 제한하는 규칙등을 설정할 수 있고 보안규칙에 대한 복잡성을 해소할 수있다.
사용자가 Firebase인증으로 인증이 되면 스토리지 보안규칙의 request.auth변수를 통해 사용자의 고유 Id(request.auth.uid)및 기타 모든 사용자 정보를 토큰(request.auth.token)에 포함하는 객체
사용자가 인증되지 않은 경우 request.auth는 null 이를 통해 엑세스를 사용자 별로 안전하게 제어 가능
ex1)
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
⇒/b/{bucket}/o 해당 버킷스토리지의 경우 file read 및 write의 경우 인증된 사용자의 경우에만 허용
ex2) 버킷 스토리지 하위의 디렉토리별로 보안 규칙을 달리 주는 경우
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /public/{allPaths=**} {
allow read
}
match /private/{allPaths=**} {
allow read : if request.auth != null;
}
}
}
⇒/b/{bucket}/o 해당 버깃 하위의 public디렉토리는 file read의 경우 모든 사용자에게 허용
private디렉토리 file read는 인증된 사용자의 경우에만 허용