이 페이지에서는 Filestore 인스턴스에 대한 액세스를 제어하는 방법을 설명합니다.
Filestore는 Filestore 인스턴스 액세스 보안을 위해 Kerberos를 지원하지 않습니다. Linux 옵션을 사용하여 NFS 액세스를 제어하고 Identity and Access Management(IAM)를 사용하여 인스턴스 생성, 수정, 보기, 삭제와 같은 인스턴스 작업에 대한 액세스를 제어할 수 있습니다.
Fileshare 내보내기 설정
Filestore 파일 공유에는 다음과 같은 기본 /etc/exports
설정이 할당됩니다.
- 파일 공유 연결이 허용된 클라이언트를 식별하는 클라이언트 목록에는 Filestore 인스턴스에 대해 선택한 VPC 네트워크에 있는 모든 내부 IP 주소가 포함됩니다. 내부 IP 주소는 서브넷 범위에 나열된 모든 범위일 수 있습니다. 하지만 클라이언트가 RFC 1918 이외의 서브넷 범위에 있으면 IP 기반 액세스 제어를 사용하여 Filestore 인스턴스에 대한 액세스 권한을 명시적으로 부여해야 합니다.
- 파일 공유에서 읽기 및 쓰기 작업을 모두 허용하도록
rw
옵션이 사용됩니다. - 사용자 ID 매핑 옵션
no_root_squash
가 사용되므로, 루트 사용자를 포함한 모든 사용자 및 그룹은 Filestore 인스턴스 및 클라이언트에서 모두 동일해야 합니다. - 다른 옵션에는
/etc/exports
기본값이 사용됩니다.
기본 등급 인스턴스
기본 SSD 및 기본 HDD 등급 인스턴스는 /config/google-prober
라벨이 지정된 내보낸 공유를 만들어 액세스, 내구성, 성능을 확인하는 내부 프로브 프로세스를 지원하는 데 사용합니다. 위에 명시된 설정과 동일한 설정을 사용하여 인스턴스 IP 주소에만 액세스할 수 있는 클라이언트 목록으로 공유를 내보냅니다. 공유는 인스턴스에서 호스팅되거나 인스턴스에서 생성된 프로버에 액세스할 수 있으며 인스턴스 외부에서 액세스할 수 없습니다.
인스턴스는 IP 기반 액세스 제어 적용 여부에 관계없이 공유를 내보냅니다. 사용자는 showmount -e
명령어를 사용하여 내보낸 공유를 볼 수 있습니다.
IP 기반 액세스 제어
Google Cloud 콘솔을 사용하여 액세스 제어 규칙을 만들거나 gcloud CLI를 사용하여 인스턴스를 만드는 동안 JSON 구성 파일을 지정하여 내보내기 설정을 변경할 수 있습니다. 자세한 내용은 IP 기반 액세스 제어 구성을 참조하세요.
인스턴스가 생성된 후에 새 액세스 제어 규칙을 추가하거나 기존 규칙을 수정할 수도 있습니다. 자세한 내용은 인스턴스 수정을 참조하세요.
파일 공유 권한
Filestore 인스턴스를 만들 때 해당 인스턴스의 파일 공유에는 기본 POSIX 파일 권한인 rwxr-xr-x
가 포함됩니다. 이러한 권한은 Filestore 인스턴스에서 연결된 클라이언트의 루트 사용자만 파일 공유에 대해 읽기/쓰기 권한을 가짐을 의미합니다. 다른 사용자는 기본적으로 읽기 액세스 권한만 가집니다. 클라이언트 루트 사용자는 권한 및 소유자를 변경할 수 있습니다.
파일 공유의 액세스 구성
파일 공유를 마운트할 때 마운트 옵션과 /etc/fstab
설정을 사용하여 파일 공유의 쓰기 가능 여부와 여기서 파일을 실행할 수 있는지 여부를 결정할 수 있습니다. 파일 공유를 마운트한 후에는 chmod
및 setfacl
과 같은 표준 Linux 명령어를 사용하여 파일 및 파일 공유 권한을 설정할 수 있습니다. 기본 등급만 setfacl
을 지원합니다.
일관적 권한 설정
권한 에스컬레이션을 방지하려면 동일한 Filestore 인스턴스에 연결되는 모든 클라이언트에서 각 사용자에게 일관된 권한을 설정하는 것이 좋습니다. 파일 공유가 두 개 이상의 클라이언트에 마운트되었고 사용자에게 한 클라이언트에 대한 루트 권한만 있지만 다른 클라이언트에 대해서는 루트 권한이 없는 경우, 다음과 같은 권한 에스컬레이션 시나리오가 가능합니다.
- 사용자는 루트 액세스 권한이 있는 클라이언트의 실행 파일에
setuid
속성을 설정합니다. - 그런 다음 사용자는 실행 파일을 파일 공유에 업로드합니다.
- 사용자는 업로드된 파일을 최소한 읽기 권한을 가진 모든 클라이언트에서 루트로 실행합니다.
이 시나리오는 setuid
비트를 통해 사용자가 파일 소유자 권한(이 경우에는 루트)을 사용하여 파일을 실행할 수 있기 때문에 가능합니다.
겹치는 권한
영역(이전의 대규모 SSD) 및 엔터프라이즈 인스턴스에서 이제 겹치는 권한을 지원합니다.
겹치는 IP 주소 서브넷에 대해 두 개의 개별 액세스 제어 규칙이 정의된 경우 더 작은 서브넷에 정의된 규칙이 우선 적용됩니다.
예를 들어 JSON 구성 파일에 IPv4 주소 서브넷 10.0.0.0/24
에 대한 읽기 및 쓰기 액세스 권한을 부여하는 규칙이 포함되어 있고 별도의 규칙으로 IPv4 주소 서브넷 10.0.0.0/28
에 대한 읽기 전용 액세스 권한을 부여하는 경우 Filestore는 먼저 더 작은 서브넷에 대한 규칙을 인식하고 적용합니다. 그런 다음 정의된 IP 주소 서브넷의 나머지 부분에 다른 규칙이 적용됩니다. 이 예시에서 IPv4 주소 10.0.0.20
을 사용하는 클라이언트에는 읽기 및 쓰기 권한이 부여되고 10.0.0.12
를 사용하는 클라이언트에는 읽기 전용 권한이 부여됩니다.
{
"--file-share":
{
"capacity": "2048",
"name": "my_vol",
"nfs-export-options": [
{
"access-mode": "READ_WRITE",
"ip-ranges": [
"10.0.0.0/24"
],
"squash-mode": "ROOT_SQUASH",
"anon_uid": 1003,
"anon_gid": 1003
},
{
"access-mode": "READ_ONLY",
"ip-ranges": [
"10.0.0.0/28"
],
"squash-mode": "NO_ROOT_SQUASH"
}
]
}
}
다음과 같은 제한사항이 적용됩니다.
동일한 IPv4 서브넷에서는 겹치는 권한이 지원되지 않으며 오류를 반환합니다.
기본 SSD 또는 기본 HDD 인스턴스에서는 겹치는 권한이 지원되지 않습니다.