Cassandra JMX 인증 및 권한 부여: 사용자 생성

보안에는 두 가지 유형이 있습니다. Apache Cassandra 그리고 Datastax 기업.

  • 내부인증
  • 권한 부여

내부 인증 및 권한 부여란 무엇입니까?

내부 인증은 기본적으로 사용자 연결을 확인하는 것입니다. 사용자는 로그인과 비밀번호로 인증됩니다. 모든 사용자 계정은 다음에서 관리됩니다. Cassandra 내부적으로.

내부 승인은 사용자의 허가를 처리합니다. 사용자가 수행할 수 있는 작업을 다룹니다. 예를 들어, 어떤 사용자에게 데이터 읽기 권한만 있는지, 어떤 사용자에게 데이터 쓰기 권한이 있는지, 어떤 사용자에게 데이터 삭제 권한이 있는지 등의 사용자 권한을 부여할 수 있습니다.

그러나 인증은 다음을 통해 외부에서 제어할 수도 있습니다. Kerberos (Kerberos는 자격 증명을 안전하게 관리하는 데 사용됨) 및 LDAP(LDAP는 액세스가 허용된 계정과 같은 계정에 대한 신뢰할 수 있는 정보를 보유하는 데 사용됨).

외부 인증은 Kerberos 및 LDAP에서 지원되는 인증입니다. Apache Cassandra 외부 인증을 지원하지 않습니다.

datastax enterprise만이 Kerberos 및 LDAP를 통한 외부 인증을 지원합니다. 내부 인증은 두 가지 모두에서 지원되지만 Apache Cassandra Datastax 기업도 마찬가지입니다.

인증 및 권한 부여 구성

In Cassandra, 기본적으로 인증 및 권한 부여 옵션은 비활성화되어 있습니다. 구성해야합니다 Cassandra인증 및 권한 부여를 활성화하기 위한 .yaml 파일입니다.

엽니다 Cassandra.yaml 파일을 열고 내부 인증 및 권한 부여를 처리하는 줄의 주석 처리를 해제합니다.

인증 및 권한 부여 구성

  • In Cassandra.yaml 파일에서 기본적으로 인증자 값은 'AllowAllAuthenticator'입니다. 이 인증자 값을 'AllowAllAuthenticator'에서 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'로 변경합니다.
  • 유사하게, Cassandra.yaml 파일에서 기본적으로 권한 부여자 값은 'AllowAllAuthorizor'입니다. 이 권한 부여자 값을 'AllowAllAuthorizor'에서 'com.datastax.bdp.cassandra.auth.'로 변경합니다.Cassandra승인자'.

로그인

이제 인증이 활성화되었습니다. 키스페이스에 액세스하려고 하면 Cassandra 오류를 반환합니다.

기본적으로, Cassandra 사용자 이름 'cassandra'와 비밀번호 'cassandra'를 사용하여 슈퍼 계정을 제공합니다. '에 로그인하여Cassandra' 계정이면 원하는 대로 할 수 있습니다.

이에 대한 아래 스크린샷을 살펴보겠습니다. 기본값을 사용하지 않는 경우 로그인이 허용되지 않습니다. Cassandra "사용자 이름과 비밀번호".

로그인

이제 두 번째 스크린샷에서 다음을 사용한 후를 볼 수 있습니다. Cassandra 기본 로그인 자격 증명을 사용하면 로그인할 수 있습니다.

이 계정으로 다른 사용자를 생성할 수도 있습니다. 비밀번호를 기본값에서 변경하는 것이 좋습니다. 로그인 예시는 다음과 같습니다. Cassandra 사용자 및 기본 비밀번호를 변경하십시오.

로그인

alter user cassandra with password 'newpassword';

새 사용자 만들기

'를 사용하여 새 계정을 만들 수 있습니다.Cassandra' 계정.

새 사용자를 생성하고 로그인하려면 해당 사용자가 슈퍼유저인지 여부와 함께 비밀번호가 지정됩니다. 슈퍼유저만이 새로운 사용자를 생성할 수 있습니다.

create user robin with password 'manager' superuser;
create user robin with password 'newhire';

다음 구문을 사용하면 모든 사용자 목록을 얻을 수 있습니다.

list users;

새 사용자 만들기

다음 구문을 사용하여 사용자를 삭제할 수 있습니다.

drop user laura;

권한 부여

권한 부여는 특정 사용자가 수행할 수 있는 작업에 대한 권한을 사용자에게 할당하는 것입니다.

다음은 사용자에게 권한을 할당하는 일반적인 구문입니다.

GRANT permission ON resource TO user

사용자에게 부여할 수 있는 권한에는 다음과 같은 유형이 있습니다.

  1. 공통
  2. 바꾸다
  3. 승인
  4. 몹시 떠들어 대다
  5. DROP
  6. 수정
  7. SELECT

다음은 사용자에게 권한을 할당하는 예입니다.

Create user laura with password 'newhire'; 
grant all on dev.emp to laura;
revoke all on dev.emp to laura;
grant select on dev.emp to laura;

새로운 사용자 'laura'가 'newhire'라는 비밀번호로 생성됩니다.

다음은 사용자 'laura'가 emp_bonus 테이블에 액세스하려고 시도하는 예입니다. Laura에게는 dev.emp에 액세스할 수 있는 권한만 있고 이 테이블 dev.emp_bonus에 대한 권한이 없으므로 오류가 반환되었습니다.

권한 부여

select* form emp_bonus;

사용자에게 할당된 모든 권한 목록을 얻을 수 있습니다. 권한 정보를 얻는 예는 다음과 같습니다.

권한 부여

list all permissions of laura;

리소스에 대한 모든 권한을 나열할 수도 있습니다. 다음은 테이블에서 권한을 얻는 예입니다.

권한 부여

list all permissions on dev.emp;

방화벽 구성

방화벽이 실행 중이면 일부 노드를 포함하여 노드 간 통신을 위해 다음 포트를 열어야 합니다. Cassandra 포트. 만약에 Cassandra 포트가 열리지 않습니다. Cassandra 노드는 데이터베이스 클러스터에 가입하는 대신 독립형 데이터베이스 서버로 작동합니다.

Cassandra 클라이언트 포트

포트 번호 상품 설명
9042 Cassandra 클라이언트 포트
9160 Cassandra 클라이언트 포트 중고품

Cassandra 노드 간 포트

포트 번호 상품 설명
7000 Cassandra 노드 간 클러스터 통신
7001 Cassandra SSL 노드 간 클러스터 통신
7199 Cassandra JMX 모니터링 포트

공용 포트

포트 번호 상품 설명
22 SSH 포트
8888 OpsCenter 웹사이트. 브라우저 http 요청.

Cassandra OpsCenter 포트

포트 번호 상품 설명
61620 OpsCenter 모니터링 포트.
61621 Opscenter 에이전트 포트

JMX 인증 활성화

기본 설정으로는 Cassandra, JMX는 로컬 호스트에서만 액세스할 수 있습니다. JMX에 원격으로 액세스하려면 다음에서 LOCAL_JMX 설정을 변경하세요. Cassandra-env.sh 및 인증 또는 SSL을 활성화합니다.

JMX 인증을 활성화한 후 다음을 확인하세요. 운영센터 및 nodetool은 인증을 사용하도록 구성됩니다.

순서

JMX 인증을 활성화하려면 다음 단계를 따르세요.

  1. cassandra-env.sh 파일에서 다음 줄을 추가하거나 업데이트합니다.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

또한 다음에서 LOCAL_JMX 설정을 변경하세요. Cassandra-env.sh

LOCAL_JMX=no
  1. /jdk_install_location/lib/management/에서 jmxremote.password.template을 /etc/cassandra/로 복사하고 이름을 jmxremote.password로 바꿉니다.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. jmxremote.password의 소유권을 실행하는 사용자로 변경하십시오. Cassandra 읽기 전용 권한으로 변경
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. jmxremote.password를 편집하고 JMX 호환 유틸리티에 대한 사용자 및 비밀번호를 추가하십시오.
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. 추가 Cassandra /jdk_install_location/lib/management/jmxremote.access에 대한 읽기 및 쓰기 권한이 있는 사용자
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. 다시 시작 Cassandra
  2. 다음과 같이 nodetool을 실행하세요. Cassandra 사용자 및 비밀번호.
$ nodetool status -u cassandra -pw cassandra

요약

이 튜토리얼에서는 보안에 대해 설명합니다. Cassandra 그리고 구성 Cassandra보안 활성화를 위한 .yaml 파일입니다. 이 외에도 새로운 사용자 계정을 생성하는 방법, 권한 할당, 방화벽 구성 방법 등에 대해서도 설명합니다.