nifi.apache.org/docs/nifi-docs/html/toolkit-guide.html
Apache NiFi Toolkit Guide
In order to facilitate the secure setup of NiFi, you can use the tls-toolkit command line utility to automatically generate the required keystores, truststore, and relevant configuration files. This is especially useful for securing multiple NiFi nodes, wh
nifi.apache.org
NiFi 툴킷은 standalone 과 Cluster 환경에서 NiFi 를 설정하고 지원하는 여러 CLI 유틸리티를 제공해 준다.
만약 NiFi 가 보안(secure) 환경에 있다면, 다음 두 가지 정책을 미리 구성해야 한다고 한다. [문서 해당 부분 링크]
- 컨트롤러에 접근 권한
- 프록시 사용자 요청 권한
...읽어도 아직 이해를 못 하겠다. 링크 남겨둠.
toolkit 을 받기 위해 아래 공식 사이트에 들어간다.
여기서 nifi-toolkit-버전-bin.tar.gz 를 받고
tar -zxvf 명령어를 이용하여 압축을 풀면 된다.
< NiFi CLI >
CLI 도구를 사용하여, NiFi Registry 에서 NiFi 로 flow 를 배포하거나,
프로세스 그룹, 클러스터 노드 등을 관리할 수 있고 또 자동화 할 수 있다.
CLI 는 명령어 하나를 실행하는 모드나, 대화형 모드로 실행 가능하다.
명령어를 직접 실행하도록 하려면
bin/cli.sh [명령어] [인자값] |
대화형으로 실행하려면
bin/cli.sh |
아래는 대화형 모드로 CLI 를 실행했을 때의 모습
toolkit CLI 에서 사용 가능한 명령어는
bin/cli.sh 뒤에 아무거나 타이핑하면 "네가 넣은 명령어는 없는 거야 자 이걸 써봐!" 하면서 주르륵 뜬다.
예를 들어 bin/cli.sh a
각종 명령어에 대한 도움말을 보려면
bin/cli.sh [명령어] -h |
h 는 help 의 머릿글자인 것 같다.
toolkit CLI 는 NiFi 뿐 아니라, Registry 와도 연동 가능하다.
toolkit 에서 NiFi 와 연동하기 위해, NiFi 의 ip 와 part number 를 필요로 한다.
간단한 예를 하나 들어보자.
NiFi ip 가 11.0.0.3 이고 http 8080 port 로 열려있다고 하자.
나는 toolkit 에서 대화형 CLI 를 사용하기위해 bin/cli.sh 명령어를 실행하여 대화형 모드로 들어갔다.
NiFi 의 현재 유저들과 cluster 요약정보를 얻기 위해 다음과 같은 명령어를 입력했다.
#> nifi current-user -u http://11.0.0.3:8080 #> nifi cluster-summary -u http://11.0.0.3:8080 |
이런 방식으로 NiFi 와 연동하여 관리할 수 있다.
Registry 도 같은 방식으로 연동하면 된다.
(대신 명령어는 registry 명령어를 사용해야겠지)
-u 옵션 뒤에 넣는 주소를 baseUrl 이라고 부른다.
CLI 를 사용 할 때마다 -u baseUrl 을 넣는것은 조금 귀찮은 일이 될 수 있다.
따라서 CLI session 에 baseUrl 을 저장해두면, 이후부터는 nifi current-user 처럼 -u 옵션 없이 사용 가능하다.
공식 문서에 나온대로 설정을 해보자.
Toolkit CLI 를 NiFi 와 연동을 하는 상황이다.
NiFi 의 nifi.properties path 가 /home/eye/nifi/conf/nifi.properties 라고 하자.
nifi.properties 를 vi 로 열고, 다음과 같이 baseUrl 을 추가해준다.
..... baseUrl=http://localhost:18080 keystore= keystoreType= keystorePasswd= keyPasswd= truststore= ..... |
왜 하필 security properties 부분에 넣는지는 모르겠지만, 알아보기 편하라고 여기 넣는 것 같다.
공식 문서에서 하는 거니 그냥 따라해보자.
이제 CLI 의 session 에 nifi.properties 를 추가해준다.
bin/cli.sh session set nifi.props /home/eye/nifi/conf/nifi.properties |
다음 명령어로 session 이 잘 추가되었는지 확인할 수 있다.
bin/cli.sh session show |
이제 -u 옵션 없이 CLI 명령을 실행할 수 있다.
bin/cli.sh nifi cluster-summary |
Registry 도 마찬가지 방법으로 CLI session 에 properties 를 추가하고 -u 옵션을 생략할 수 있다.
Registry 의 경우 nifi-registry.properties 파일을 추가해야하는데,
nifi.properties 와 마찬가지로 nifi-registry.properties 내부에 baseUrl 을 넣어줘야 한다.
session 에 추가하기 위해 다음과 같은 명령어를 사용한다.
bin/cli.sh session set nifi.reg.props /home/eye/nifi-registry/conf/nifi-registry.properties |
NiFi 자체에 암호화가 걸려있는 경우, toolkit CLI 역시 암호문을 알아야 NiFI 에 접근 가능하다.
암호화 하는 방법에 대해선 여기 링크 참고
예를 들어, NiFi 가 /home/eye/nifi 에 설치되어 있다고 하자.
위에 링크대로 암호화를 진행하였다면, 다음 이미지처럼 nifi.properties 에서 keystore 정보와 truststore 정보를 찾을 수 있다.
참고로 이미지 가장 위에 baseUrl 은 직접 넣었다. 이게 없으면 toolkit CLI 에서 NiFi 를 찾지 못하기 때문에.
toolkit 에서는 위의 정보를 이용하여 다음과 같이 명령어를 사용한다.
bin/cli.sh nifi current-user \ -ks /home/eye/nifi/conf/keystore.jks \ -ksp ioLA6eYsXG3QiTfatD7uVnVlUttQMCbYtsDgBP2RuRI \ -kst jks \ -ts /home/eye/nifi/conf/truststore.jks \ -tsp /UGJ9PtAwbS1Q+1ZRxs2+NWNun5bHVBqex7fS/k6/fI \ -tst jks |
-ks 는 keystore
-ksp 는 keystorePasswd
-kst 는 keystoreType
-ts 는 truststore
-tsp 는 truststorePasswd
-tst 는 truststoreType
을 의미한다. 각각 맞는 값을 nifi.properties 에서 복붙하면 된다.
(위의 옵션 해설을 bin/cli.sh nifi current-user -h 명령어로 볼 수 있다.)
대신 권한이 있어야 CLI 에서 접근이 가능하다. 권한이 없다면
"Error retrieving current: Unknown user with identity 'CN=..., OU=...'. Contact the system administrator."
이런 에러가 나오기 때문에, NiFi 에서 접근 권한을 챙겨줘야 한다.
해보진 않았지만 암호화된 NiFi registry 에 접근하는 것 역시 비슷한 절차를 거칠 것이다.
참고로 NiFi toolkit 도 Docker 버전이 있음.
unofficial 이라고 써있긴 하다만 apache 이름이 붙어있고 pulls 수가 100K+ 인 것으로 보아..
사용해도 될 것 같음.
hub.docker.com/r/apache/nifi-toolkit
Docker Hub
hub.docker.com
아래 명령어를 통해 실행시키면 된다.
docker run --name toolkit -d apache/nifi-toolkit cli docker exec -it toolkit 'bin/cli.sh' |
'NiFi' 카테고리의 다른 글
[NiFi] standalone NiFi 에 security 적용하는 방법(OIDC) (0) | 2021.03.02 |
---|---|
[NiFi] Docker NiFi Cluster 에 security 적용하는 방법(TLS) (0) | 2021.03.02 |
[NiFi] standalone NiFi 에 security 적용하는 방법(TLS) (4) | 2021.02.06 |
[NiFi] Attribute 에 Counter 만들기 (0) | 2021.02.05 |
[NiFi] Elasticsearch 와 연동하는 flow 작성 (0) | 2021.02.04 |