Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다.
문의사항은 gooper@gooper.com로 메일을
보내주세요.
<<사전 준비>>
1. ranger role 설정(AD의 GROUPS에 등록및 USERS의 각 사용자에 group을 매핑해줌)
* rl_gooperdb_all
- gooperdb및 HDFS /DATA/GOOPERDB에 대한 모든 권한
- /tmp/zone2에 대한 all(이 설정은 안해도 됨)권한
- Encryption zone인 /tmp/zone2에 대한 생성, 조회 권한을 가짐(Get Get Keys Get Metadata Generate EEK Decrypt EEK)
* rl_gooperdb_sel
- gooperdb및 /DATA/GOOPERDB에 대한 select 권한(이 설정은 안해도 됨)
- /tmp/zone2에 대한 read(이 설정은 안해도 됨)
- Encryption zone인 /tmp/zone2에 대한 조회 권한을 가짐(Decrypt EEK)
2. 사용자 계정및 매핑 그룹현황(AD의 USERS에 등록)
user1 : rl_gooperdb_all, gooperdb.zone_table2를 create한 계정임
user2 : rl_gooperdb_sel
3. /tmp/zone2을 Encryption zone으로 생성한다.
<<테스트>>
1. 테스트1 (user2로 encryption zone인/tmp/zone2및 gooperdb.zone_table에 대한 권한이 전혀없는 상태에서 Hue에서 다음을 수행함)
select * from gooperdb.zone_table;
-->AuthorizationException: User 'user2' does not have privileges to execute 'SELECT' on: gooperdb.zone_table
insert into gooperdb.zone_table(nm) values ('user2가 입력함');
-->AuthorizationException: User 'user2' does not have privileges to execute 'INSERT' on: gooperdb.zone_table
invalidate metadata gooperdb.zone_table;
show grant user `user2` on table gooperdb.zone_table;
AD에서 Users에 Groups을 빼도 권한이 살아있는경우가 있는데.. 이때는 Hue의 사용자관리에서 Add/Sync LDAP user클릭후 해당 user명을 입력하면
AD로 부터의 최신 현황을 update하면서 권한이 빠진다.
--> Done. 0 results.
create table gooperdb.zone_table2(nm string) location '/tmp/zone2';
-->AuthorizationException: User 'user2' does not have privileges to execute 'CREATE' on: gooperdb
/tmp/zone2/sec_test_file.txt접근시
-->
Cannot access: /tmp/zone2/sec_test_file.txt.
500 Server Error: Internal Server Error for url: http://bdapnamt02.gooper.com:14000/webhdfs/v1/tmp/zone2/sec_test_file.txt?length=3&op=OPEN&user.name=hue&offset=0&doas=user2 {"RemoteException":{"message":"User:user2 not allowed to do 'DECRYPT_EEK' on 'pidi_key'","exception":"AuthorizationException","javaClassName":"org.apache.hadoop.security.authorize.AuthorizationException"}} (error 500)
2. 테스트2(user2로 encryption zone인/tmp/zone2에 decryption권한및 gooperdb.zone_table에 대한 select 권한이 있는 상태에서 Hue에서 다음을 수행함)
select * from gooperdb.zone_table;
-->성공
insert into gooperdb.zone_table(nm) values ('user2가 입력함');
-->AuthorizationException: User 'user2' does not have privileges to execute 'INSERT' on: gooperdb.zone_table
invalidate metadata gooperdb.zone_table;
show grant user `user2` on table gooperdb.zone_table;
AD에서 Users에 Groups을 빼도 권한이 살아있는경우가 있는데.. 이때는 Hue의 사용자관리에서 Add/Sync LDAP user클릭후 해당 user명을 입력하면
AD로 부터의 최신 현황을 update하면서 권한이 빠진다.
--> GROUP user2 gooperdb * * select false NULL
create table gooperdb.zone_table2(nm string) location '/tmp/zone2';
-->AuthorizationException: User 'user2' does not have privileges to execute 'CREATE' on: gooperdb
/tmp/zone2접근시
-->Cannot access: /tmp/zone2.
/tmp/zone2/sec_test_file.txt접근시
-->Cannot access: /tmp/zone2/sec_test_file.txt.
3. 테스트3(user1로 encryption zone인/tmp/zone2에 생성권한및 gooperdb에 대한 all 권한이 있는 상태에서 Hue에서 다음을 수행함)
select * from gooperdb.zone_table;
-->성공
insert into gooperdb.zone_table(nm) values ('user1가 입력함2');
-->성공
show grant user `user1` on table gooperdb.zone_table;
AD에서 Users에 Groups을 빼도 권한이 살아있는경우가 있는데.. 이때는 Hue의 사용자관리에서 Add/Sync LDAP user클릭후 해당 user명을 입력하면
AD로 부터의 최신 현황을 update하면서 권한이 빠진다.
-->
principal_type principal_name database table column uri udf privilege grant_option create_time
GROUP user1 gooperdb * * all false NULL
/tmp/zone2/table2폴더 생성 --> 성공
create table gooperdb.zone_table2(nm string) location '/tmp/zone2/table2';
-->성공
insert into gooperdb.zone_table2(nm) values ('user1가 gooperdb.zone_table2을 생성 후 입력함2');
-->성공
select * from gooperdb.zone_table2;
-->성공
/tmp/zone2접근시
-->성공
/tmp/zone2/table2접근및 파일 읽기
-->성공
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
20 | HBASE Client API : 기본 기능 정리 | 구퍼 | 2013.04.01 | 3554 |
19 | hadoop 2.6.0 기동(에코시스템 포함)및 wordcount 어플리케이션을 이용한 테스트 | 총관리자 | 2015.05.05 | 3773 |
18 | Last transaction was partial에 따른 Unable to load database on disk오류 발생시 조치사항 | 총관리자 | 2018.08.03 | 3979 |
17 | Hadoop Cluster 설치 (Hadoop+Zookeeper+Hbase) | 구퍼 | 2013.03.07 | 3995 |
16 | 다수의 로그 에이전트로 부터 로그를 받아 각각의 파일로 저장하는 방법(interceptor및 multiplexing) | 총관리자 | 2014.04.04 | 4089 |
15 | sqoop작업시 hdfs의 개수보다 더많은 값이 중복되어 oracle에 입력되는 경우가 있음 | 총관리자 | 2014.09.02 | 4093 |
14 | import 혹은 export할때 hive파일의 default 구분자는 --input-fields-terminated-by " |