google OAuth2 를 이용하여 NiFi 를 암호화하는 방법에 대해 설명한다.

NiFi 에서는 OIDC(OpenID Connect) 라고 부르는가 봄.

 

Apache NiFi 가 기본 설정값으로 설치되었다면, NiFi WebUI 에는 누구나 접근이 가능하기 때문에,

SSL 을 적용하여 권한이 있는 google 계정을 갖는 사용자만 https 를 통해 접근할 수 있도록 한다.

 

이 문서는 Standalone NiFi 를 기준으로 설명한다.

 

TLS 암호화가 적용되었다는 전제를 둔다. [TLS 암호화 방법]

 

 

 

Google cloud platform 을 설정한다.
아래 링크로 들어간 후 자신의 google 계정으로 로그인한다.

 

https://console.developers.google.com/?hl=ko

 

프로젝트 선택을 누르고, 새 프로젝트를 누른다.

 

 

프로젝트 이름을 할당한다.

 

생성한 프로젝트를 선택한다.
OAuth 동의 화면을 선택하고, 외부에 체크한 후 만들기를 누른다.

 

앱 이름과 사용자 지원 이메일을 넣는다.
여기서 앱 이름은, NiFi 에 접근하는 사용자들이 google login 하는 창에서 볼 수 있는 이름이다.

 

 

개발자 연락처 정보를 넣고 저장 후 계속을 누른다.
이후 계속 저장 후 계속 을 누르며 진행을 마친다.

 

OAuth 동의 화면 설정이 마무리 된 모습

 

 

사용자 인증 정보를 선택하고 사용자 인증 정보 만들기를 누른 후 OAuth 클라이언트 ID 를 선택한다.

 

애플리케이션 유형은 웹 애플리케이션을 선택하고 이름을 넣는다.

 

 

승인된 리디렉션 URI 에 다음과 같이 넣는다.
그 후 만들기를 누른다.

 

https://localhost:9443/nifi-api/access/oidc/callback

 

OAuth 클라이언트가 생성되면 클라이언트 ID 와 클라이언트 보안 비밀번호를 얻을 수 있다.
이 값은 나중에 언제든 다시 찾을 수 있으니 따로 저장해두지 않아도 괜찮다.

 

 

NiFi 를 설정한다.

아래부터, nifi 를 설치한 디렉터리를 $NIFI_HOME/nifi-1.13.0/ 이라고 한다.

 

nifi.properties 의 내부 oidc 항목을 다음과 같이 업데이트한다.

 

nifi.security.user.oidc.discovery.url=https://accounts.google.com/.well-known/openid-configuration

 

여기서 nifi.security.user.oidc.client.id 에는 OAuth 생성 후 얻은 클라이언트 ID 값을 넣으면 되고,

nifi.security.user.oidc.client.secret 에는 OAuth 생성 후 얻은 클라이언트 보안 비밀번호를 넣으면 된다.

 

 

authorizers.xml 의 내부를 다음과 같이 업데이트한다.

[YOUR_ACCOUNT] 부분에 자신의 google account 이메일을 넣는다.

 

userGroupProvider : Initial User Identity 1 : 52번째 줄

accessPolicyProvider : Initial Admin Identity : 282번째 줄

 

아래 명령어를 통해 nifi 를 시작하고, log 를 살펴본다.

 

../bin/nifi.sh start ; tail -f ../logs/nifi-app.log

 

로그에서 다음과 같이 JettyServer 의 주소가 뜨면 된다.

 

인터넷 브라우저에서 https://localhost:9443/nifi/ 에 접근한다.

보안 위험 가능성 화면이 뜨면, 고급을 누르고 위험을 감수하고 계속 진행을 누른다.

 

 

google 로그인 화면으로 화면이 전환된다.

 

 

https 를 이용하여 NiFi 에 접근하였다.

 

 

 

 

참고
https://nifi.apache.org/docs/nifi-docs/html/administration-guide.html#openid_connect
https://bryanbende.com/development/2017/10/03/apache-nifi-openid-connect

+ Recent posts