액세스 제어

이 페이지에서는 Filestore 인스턴스에 대해 액세스를 제어하는 방법을 설명합니다.

Filestore는 Filestore 인스턴스 액세스 보안을 위해 Kerberos를 지원하지 않습니다. 대신 아래에 설명된 Linux 및 Identity and Access Management(IAM) 옵션을 사용하세요.

Fileshare 내보내기 설정

Filestore 파일 공유에는 다음과 같은 기본 /etc/exports 설정이 할당됩니다.

  • 파일 공유 연결이 허용된 클라이언트를 식별하는 클라이언트 목록은 Filestore 인스턴스에 대해 선택한 VPC 네트워크에 있는 모든 내부 IP 주소로 구성됩니다. 내부 IP 주소는 서브넷 범위에 나열된 모든 범위일 수 있습니다.
  • 파일 공유 읽기-쓰기가 되도록 rw 옵션이 사용됩니다.
  • 사용자 ID 매핑 옵션 no_root_squash가 사용되므로, 루트 사용자를 포함한 모든 사용자 및 그룹은 Filestore 인스턴스 및 클라이언트에서 모두 동일해야 합니다.
  • 다른 옵션에는 /etc/exports 기본값이 사용됩니다.

IP 기반 액세스 제어

Cloud Console을 사용하여 액세스 제어 규칙을 만들거나 gcloud 도구를 사용하여 인스턴스를 만드는 동안 json 구성 파일을 지정하여 내보내기 설정을 변경할 수 있습니다. 자세한 내용은 IP 기반 액세스 제어 구성을 참조하세요.

인스턴스가 생성된 후에 새 액세스 제어 규칙을 추가하거나 기존 규칙을 수정할 수도 있습니다. 자세한 내용은 인스턴스 수정을 참조하세요.

파일 공유 권한

Filestore 인스턴스를 만들 때 해당 인스턴스의 파일 공유에는 기본 Unix 권한인 rwxr-xr-x(8진수 표기법 755)가 포함됩니다. 이러한 권한은 Filestore 인스턴스에서 연결된 클라이언트의 루트 사용자만 파일 공유에 대해 읽기/쓰기 권한을 가짐을 의미합니다. 다른 사용자는 기본적으로 읽기 액세스 권한만 갖지만 클라이언트 루트 사용자는 권한 및 소유자를 변경할 수 있습니다.

파일 공유의 액세스 구성

클라이언트에 Filestore 파일 공유를 마운트할 때 mount 명령어 옵션과 /etc/fstab 파일 설정을 사용하여 마운트된 파일 공유가 쓰기 가능한지 그리고 여기에서 파일을 실행할 수 있는지 여부를 확인할 수 있습니다. 파일 공유를 마운트한 후에는 chmodsetfacl과 같은 표준 Linux 명령어를 사용하여 파일 및 파일 공유 권한을 설정할 수 있습니다.

일관적 권한 설정

다음과 같은 경우에 발생하는 문제가 있기 때문에 동일한 Filestore 인스턴스에 연결되는 모든 클라이언트에서는 각 사용자에 대해 일관적으로 권한을 설정하는 것이 좋습니다.

  • 둘 이상의 클라이언트에서 파일 공유가 마운트되는 경우
  • 사용자에게 한 클라이언트의 루트 권한이 있지만 다른 클라이언트의 루트 권한은 없는 경우

사용자는 자신이 루트 액세스 권한이 있는 클라이언트에서 설정된 setuid 비트를 사용하여 파일을 업로드할 수 있습니다. 그러면 사용자가 최소한 읽기 이상의 권한을 갖고 있는 다른 클라이언트에서도 파일을 루트로 실행할 수 있습니다. 이것은 setuid 비트를 통해 사용자가 파일 소유자 권한(이 경우에는 루트)을 사용해서 파일을 실행할 수 있기 때문입니다.

IAM 역할 및 권한

사용자에게 Identity and Access Management(IAM) 역할을 부여하여 Filestore 작업에 대한 액세스 권한을 부여합니다.

IAM 권한은 Filestore 인스턴스 만들기와 같은 Filestore 작업에 대한 액세스만 제어합니다. 읽기 또는 실행과 같은 Filestore 파일 공유의 작업에 대한 액세스는 Linux 권한에 의해 결정됩니다.

Filestore 역할 사용

Filestore 편집자(roles/file.editor) 및Filestore 뷰어(roles/file.viewer) 역할을 사용하여 사용자에게 Filestore 권한을 부여할 수 있습니다. 원하는 경우 이 목적을 위해 기본 역할을 사용할 수 있습니다.

다음 표에서 Filestore 역할과 연관된 Filestore 권한을 참조하세요.

권한 Action Filestore 편집자 Filestore 뷰어
file.locations.get 이 서비스에서 지원하는 위치에 대한 정보를 가져옵니다.
file.locations.list 이 서비스에 지원되는 위치 정보를 나열합니다.
file.instances.create Filestore 인스턴스를 만듭니다.
file.instances.update Filestore 인스턴스를 업데이트합니다.
file.instances.delete Filestore 인스턴스를 삭제합니다.
file.instances.get 특정 Filestore 인스턴스에 대한 세부정보를 가져옵니다.
file.instances.list 프로젝트에 있는 Filestore 인스턴스를 나열합니다.
file.operations.get Filestore 인스턴스 작업의 상태를 가져옵니다.
file.operations.list Filestore 인스턴스 작업을 나열합니다.
file.operations.cancel Filestore 인스턴스 작업을 취소합니다.
file.operations.delete Filestore 인스턴스 작업을 삭제합니다.
file.backups.create Filestore 백업을 만듭니다.
file.backups.update Filestore 백업을 업데이트합니다.
file.backups.delete Filestore 백업을 삭제합니다.
file.backups.get 특정 Filestore 백업에 대한 세부정보를 가져옵니다.
file.backups.list 프로젝트의 Filestore 백업을 나열합니다.

기본 역할 사용

Filestore 권한은 소유자, 편집자, 뷰어의 IAM 기본 역할에도 연결됩니다. Filestore 역할 외에도 이러한 역할을 사용하여 사용자들에게 Filestore 권한을 부여할 수 있습니다.

다음 표에서 기본 역할과 연결된 Filestore 권한을 확인합니다.

권한 Action 프로젝트 소유자 프로젝트 편집자 프로젝트 뷰어
file.locations.get 이 서비스에서 지원하는 위치에 대한 정보를 가져옵니다.
file.locations.list 이 서비스에 지원되는 위치 정보를 나열합니다.
file.instances.create Filestore 인스턴스를 만듭니다.
file.instances.update Filestore 인스턴스를 업데이트합니다.
file.instances.delete Filestore 인스턴스를 삭제합니다.
file.instances.get 특정 Filestore 인스턴스에 대한 세부정보를 가져옵니다.
file.instances.list 프로젝트에 있는 Filestore 인스턴스를 나열합니다.
file.operations.get Filestore 인스턴스 작업의 상태를 가져옵니다.
file.operations.list Filestore 인스턴스 작업을 나열합니다.
file.operations.cancel Filestore 인스턴스 작업을 취소합니다.
file.operations.delete Filestore 인스턴스 작업을 삭제합니다.
file.backups.create Filestore 백업을 만듭니다.
file.backups.update Filestore 백업을 업데이트합니다.
file.backups.delete Filestore 백업을 삭제합니다.
file.backups.get 특정 Filestore 백업에 대한 세부정보를 가져옵니다.
file.backups.list 프로젝트의 Filestore 백업을 나열합니다.

커스텀 역할

사전 정의된 IAM 역할이 요구사항을 충족하지 않는 경우 지정하는 권한을 가진 커스텀 역할을 정의할 수 있습니다. 이를 지원하기 위해 IAM은 커스텀 역할을 제공합니다. Filestore의 커스텀 역할을 만들 때는 해당 역할에 프로젝트 리소스 쿼리 권한이 포함되도록 resourcemanager.projects.getresourcemanager.projects.list를 모두 포함해야 합니다. 그렇지 않으면 Google Cloud Console이 Filestore에 맞게 작동하지 않습니다.