액세스 제어

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

  • NFSv4.1 프로토콜을 사용하면 Kerberos를 사용하여 Filestore 인스턴스에 대한 액세스를 보호할 수 있습니다. 자세한 내용은 지원되는 프로토콜 정보를 참고하세요.

  • 또는 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 설정을 사용하여 파일 공유의 쓰기 가능 여부와 여기서 파일을 실행할 수 있는지 여부를 결정할 수 있습니다. 파일 공유를 마운트한 후에는 chmodsetfacl과 같은 표준 Linux 명령어를 사용하여 파일 및 파일 공유 권한을 설정할 수 있습니다. 기본 등급만 setfacl을 지원합니다.

일관적 권한 설정

권한 에스컬레이션을 방지하려면 동일한 Filestore 인스턴스에 연결되는 모든 클라이언트에서 각 사용자에게 일관된 권한을 설정하는 것이 좋습니다. 파일 공유가 두 개 이상의 클라이언트에 마운트되었고 사용자에게 한 클라이언트에 대한 루트 권한만 있지만 다른 클라이언트에 대해서는 루트 권한이 없는 경우, 다음과 같은 권한 에스컬레이션 시나리오가 가능합니다.

  • 사용자는 루트 액세스 권한이 있는 클라이언트의 실행 파일에 setuid 속성을 설정합니다.
  • 그런 다음 사용자는 실행 파일을 파일 공유에 업로드합니다.
  • 사용자는 업로드된 파일을 최소한 읽기 권한을 가진 모든 클라이언트에서 루트로 실행합니다.

이 시나리오는 setuid 비트를 통해 사용자가 파일 소유자 권한(이 경우에는 루트)을 사용하여 파일을 실행할 수 있기 때문에 가능합니다.

중복되는 권한

이제 영역, 지역, 엔터프라이즈 인스턴스에서 겹치는 권한을 지원합니다.

겹치는 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 인스턴스에서는 겹치는 권한이 지원되지 않습니다.

다음 단계