Ranger를 사용하여 캐싱 사용 설정 및 권한 축소

캐싱 사용 설정

이 섹션에는 토큰을 암호화하고 복호화하기 위한 Ranger 키 관리 시스템(KMS)의 왕복 이동 횟수를 줄이기 위해 Ranger에서 캐싱을 사용 설정하는 단계가 나와 있습니다.

  1. Dataproc 클러스터 VM에 memcached를 설치합니다. 기본적으로 Memcached 서버는 VM 포트 11211(localhost:11211)에서 시작됩니다.

    sudo apt-get install -y memcached
    

  2. Dataproc 클러스터 VM의 /etc/dataproc-ranger-gcs-plugin/conf/ranger-gcs-site.xml Ranger 구성 파일에서 다음 속성을 설정합니다.

    <property>
    <name>authorization.service.remoteCaching.address</name>
    <value>localhost:11211</value>
    </property>
    <property> <name>authorization.service.remoteCaching.class</name> <value>com.google.cloud.hadoop.ranger.gcs.authorization.caching.MemcachedCache</value> </property>
    <property> <name>authorization.service.remoteCaching.encryption.key.uri</name> <value>gcp-kms://projects/PROJECT_ID_OF_KMS_KEY/locations/REGION/keyRings/KEYRING_NAME/cryptoKeys/KEY_NAME</value> </property>

  3. 승인 서비스를 다시 시작합니다.

    sudo systemctl restart ranger-gcs-plugin-authorization-server
    

캐시 상태 보기

telnet를 사용하여 Ranger 캐시 상태를 볼 수 있습니다.

  1. telnet를 설치합니다.

    sudo apt-get install -y telnet
    

  2. telnet을 사용하여 VM 포트 11211memcache에 연결합니다.

    sudo telnet 127.0.0.1 11211
    

  3. 다음 명령어를 포함하여 telnet 명령어를 사용하여 캐시 상태를 확인합니다.

    • stats items: 캐시 항목의 상태를 나열합니다. 샘플 출력:
      STAT items:17:number 2
      STAT items:17:number_hot 0
      STAT items:17:number_warm 0
      STAT items:17:number_cold 2
      
    • stats cachedump: 캐시에 저장된 키를 나열합니다. 샘플 출력:
      stats cachedump 17 2
      ITEM 0616eeeeb54e23a09505da5bf75cd7fafe733eacf0d07bd7b1ac9cf46d17c188 [3051 b; 1707948281 s]
      ITEM d23645df9c79290d59ddb1b9710ff04fee37aa0b5de866b9b6d56b54641d68b4 [3078 b; 1707948281 s]
      
    • flush_all: 캐시 항목을 무효화합니다.

Cloud Storage 액세스 토큰 권한 축소

외부 Hive 테이블이 가리키는 Cloud Storage 경로를 위로 이동(권한 확대)하려면 Ranger 액세스 토큰 권한을 축소해야 할 수 있습니다.

모든 파티션과 하위 파티션을 테이블 수준으로 이동하려면 Dataproc 클러스터 VM의 ranger-gcs-site.xml 구성 파일에서 downscope.table.partition-name.pruning.enabled 속성을 true로 설정합니다.

<property>
  <name>downscope.table.partition-name.pruning.enabled</name>
  <value>true</value>
</property>

예:

  • Cloud Storage 버킷 이름: gs://warehouse
  • 원래의 액세스 토큰 경로: warehouse/hive/table/type=debit/year=2017/month=Aug/day=01/
  • downscope.table.partition-name.pruning.enabledtrue로 설정한 후 권한이 확대된 액세스 토큰 경로: warehouse/hive/table/