Cloud Storage에 대한 Firebase 보안 규칙 이해

지금까지 보안은 앱 개발에서 가장 복잡한 부분 중 하나였습니다. 대부분의 애플리케이션에서 개발자는 인증(사용자가 누구인지) 및 권한 관리(사용자가 무엇을 할 수 있는지)를 처리하는 서버를 직접 구축하여 실행해야 합니다. 인증 및 권한 관리는 제품의 성공에 필수적이지만 설정하기가 어렵고 제대로 구현하기란 더욱 어렵습니다.

Firebase 인증으로 손쉽게 사용자를 인증할 수 있듯이 Cloud Storage에 대한 Firebase 보안 규칙으로 손쉽게 사용자의 권한을 관리하고 요청을 검증할 수 있습니다. 저장소 보안 규칙을 사용하면 경로 기반 권한을 지정하여 복잡성을 해소할 수 있습니다. Cloud Storage 요청을 특정 사용자에게만 허용하거나 업로드 크기를 제한하는 권한 관리 규칙을 코드 몇 줄만으로 간편하게 작성할 수 있습니다.

Firebase 실시간 데이터베이스에도 Firebase 실시간 데이터베이스 규칙이라는 유사한 기능이 있습니다.

인증

사용자가 누구인지 파악하는 것은 애플리케이션 개발의 중요한 부분이며 Firebase 인증은 사용하기 쉽고 안전하며 클라이언트에서만 구현하면 되는 인증 솔루션입니다. Cloud Storage에 대한 Firebase 보안 규칙은 Firebase 인증과 연동하여 사용자 기반 보안을 구현합니다. Firebase 인증으로 사용자가 인증되면 저장소 보안 규칙의 request.auth 변수는 사용자의 고유 ID(request.auth.uid) 및 모든 기타 사용자 정보를 토큰(request.auth.token)에 포함하는 개체가 됩니다. 사용자가 인증되지 않은 경우 request.authnull입니다. 이를 통해 데이터 액세스를 사용자별로 안전하게 제어할 수 있습니다. 자세한 내용은 사용자 보안 섹션을 참조하세요.

권한 관리

사용자 식별은 보안의 일부에 불과합니다. 사용자가 누구인지 알아냈으면 Cloud Storage의 파일에 대한 액세스를 제어할 방법이 필요합니다.

Cloud Storage에 지정하는 파일별 및 경로별 권한 규칙은 Google 서버에 유지되며 앱의 파일에 대한 액세스 권한을 결정합니다. 예를 들어 기본 저장소 보안 규칙은 Firebase 인증을 거쳐야 모든 파일에 대해 read 또는 write 작업을 수행할 수 있습니다.

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Firebase 콘솔에서 Firebase 앱을 선택하고 저장소 섹션의 Rules 탭을 표시하여 규칙을 수정할 수 있습니다.

데이터 검증

Cloud Storage에 대한 Firebase 보안 규칙을 사용하여 파일 이름, 경로뿐 아니라 contentType, size 등의 파일 메타데이터 속성과 같은 데이터를 검증할 수도 있습니다.

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

이제 저장소 보안 규칙의 기본적인 기능을 익혔으므로 본격적으로 시작해 보세요.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.