본문 바로가기
Cloud Services/Firebase Hosting, Authentication

Firebase Storage Security Rule 에 대한 정리 #보안규칙

by Developer88 2020. 3. 31.
반응형

오늘은 Firebase Storage Rule에 대해서 알아보도록 하겠습니다.

AWS의 S3를 쓰시는 분들도 많이 계시지만,

Fireabse의 Stroage를 쓰시는 분들도 많이 계실텐데요.

오늘은 Firebase Storage를 사용할 때 가장 먼저 만나게 되는,

Rule 정하는 코드에 대해서 알아보도록 하겠습니다.

 

1. Firebase Storage의 첫 화면

Firebase의 좌측 네비게이션에서 storage를 선택한 후 나오는 화면에서,

시작하기를 누르면 가장 먼저 보게되는 화면은 아래의 이미지와 같습니다.

시작하자마자, 보안규칙에 관한 안내가 나오는데요.

여기서 바로 바꿀 수는 없지만, 가볍게 보고 가도록 하겠습니다.

 

먼저 아래에 디폴트로 나오는 보안 규칙에 관한 코드에서,

가장 중요한 부분은 역시, read와 write에 관한 권한 문제를 해결하기 위한 가장 아래줄의 코드인데요.

아래에서는 read와 write를 request.auth 가 null이 아닐 경우, 즉, 인증받은 유저에게만,

read와 write를 허가하라는 것 이지요.

 

 

2. 보안 규칙

위에서 read와 write모두 인증받은 사람만 사용하도록 보안 규칙을 설정해 놓았다고 하였는데요.

실제 수정은 아래와 같이, Rules 탭에서 수정가능합니다.

 

현재 상태라면, 웹의 firebase콘솔에서 이미지를 추가해 놓고,

웹에서 access 하려고 하면, 로그인해서 인증받지 못한 사람은 볼 수 없게 됩니다.

아무래도 특별한 profile같은 경우가 아니라면,

read의 경우는 public권한으로 해 놓으면 되겠지요.

 

 

그럼, 다른 설정을 해 보면서 이 rule 에 대해서 알아 보도록 하겠습니다.

 

2-1. read만 public이고, write는 인증받은 유저만

read만 public하게 하고, write는 인증받은 유저만 하려면 어떻게 해야 할 까요?

보안 규칙 코드는 어떻게 작성되는지 아래 코드에 대해 잠시 한줄씩 보도록 하겠습니다.

 

첫번째 service키워드 다음에는 어떤 서비스를 대상으로 보안 규칙을 설정할 것인가에 관한 것 이구요.

 

두번째 줄의 match키워드 다음에 "/b/{bucket}/o"는 구글 클라우드 스토리지를 의미합니다.

역시나 보안 규칙이 적용되는 범위에 관한 것 이지요.

 

다음 세번째 줄의 match키워드에 path에 관한 것이 나와있는데요.

아래에서는 모든 path에 관한 것으로 적용되어 있습니다.

아래에서 해 보겠지만, 당연히 특정 url에 대해서만 다르게 적용시키는 것도 가능합니다.

 

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

 

 

2-2. 인증받은 유저만 해당 profile에 관해서 볼 수 있는 규칙

match라는 키워드를 사용하여서 해당하는 url에 대해서 규칙을 정의할 수 있다고 하였는데요.

이번에는 "/user/유저아이디/ 그 아래 path에 있는 모든 파일" 에 대해서 범위를 적용해 봅았습니다.

userId와 인증받은 유저의 id가 같을 경우에 read와 write를 허용한다는 규칙입니다.

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

 

이상으로 Firebase Stroage사용을 위한 Security Rule에 대해서 정리해 보았구요.

더 좋은 방법이 있다면 이 글을 통해서 업데이트 하도록 하겠습니다.

 

728x90

댓글