먼저 authenticator:로 시작하는 라인을 찾고 다음과 같이 변경한다.


authenticator: PasswordAuthenticator 



이전과 같이 변경하면 클라이언트가 클러스터에 연결할 때 사용자 이름과 암호가 필요하다는 것을 카산드라에 알린다. 그러나 사용자가 로그인할 때마다 접근을 제한하지는 않는다. 접근을 제한하려면 권한을 활성화해야 한다. authorizer:로 시작하는 라인을 찾아서 다음과 같이 변경한다.


authorizer: CassandraAuthorizer 



이제 클러스터는 사용자에게 주어진 권한에 따라 로그인 사용자의 접근을 제한할 것이다. 해당 권한 설정을 적용하려면 카산드라 인스턴스를 재시작해야 한다.





사용자 계정, google을 설정한다.


CREATE USER 'google'

WITH PASSWORD 'strongpassword'

NOSUPERUSER;





system_auth 키 스페이스에서 roles 테이블에 접근해 슈퍼 유저와 기존 사용자 계정을 살펴볼 수 있다.


SELECT role, is_superuser FROM "system_auth"."roles";


키 스페이스 이름과 테이블 이름 사이에 마침표를 사용하면 USE 문으로 활성화한 키 스페이스와 상관없이 system_auth 키 스페이스를 살펴볼 것을 CQL에 알린다.


알다시피 사용자 계정은 system_auth.roles 테이블에 매우 투명하게 저장된다.



 role               | is_superuser

----------------+--------------

      cassandra |         True

google           |        False

(2 rows)





암호가 저장되는 위치와 방법이 궁금할 수 있을 것이다. 해당 정보는 동일 테이블인 system_auth.roles의 salted_hash 필드에 저장되어 있다. 암호는 일반 텍스트로 저장되지 않고 bcrypt 해시로 저장된다.




권한 목록은  다음과 같이 확인할 수 있다.


 SELECT * FROM system_auth.role_permissions;


 role           | resource                           | permissions

----------------+------------------------------------+--------------------------------

      cassandra |               roles/data_analytics | {'ALTER', 'AUTHORIZE', 'DROP'}

google |                     data/my_status |                     {'SELECT'}






참조 :

https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureConfigNativeAuth.html


https://support.datastax.com/hc/en-us/articles/207932926-FAQ-How-to-recover-from-a-lost-superuser-password



Posted by '김용환'
,