Cassandra JMX 인증 및 권한 부여: 사용자 생성
⚡ 스마트 요약
Cassandra 보안은 내부 인증, 역할 권한, 방화벽 규칙 및 JMX 액세스 제어에 기반합니다. 이 페이지에서는 각 계층을 활성화하고, 사용자를 생성하고, 권한을 부여하고, 원격 노드 도구 액세스를 안전하게 보호하는 방법을 보여줍니다.

보안에는 두 가지 유형이 있습니다. Apache Cassandra 그리고 DataStax Enterprise.
- 내부인증
- 권한 부여
내부 인증 및 권한 부여란 무엇입니까?
내부 인증은 기본적으로 사용자 연결을 검증하는 것입니다. 사용자는 로그인과 비밀번호를 통해 인증됩니다. 모든 사용자 계정은 내부에서 관리됩니다. Cassandra 내부적으로.
내부 권한 부여는 사용자의 권한 관리를 의미합니다. 사용자가 수행할 수 있는 작업을 정의하는 것이죠. 예를 들어, 어떤 사용자는 데이터 읽기 권한만, 어떤 사용자는 데이터 쓰기 권한만, 또 어떤 사용자는 데이터 삭제 권한만 갖도록 권한을 부여할 수 있습니다.
하지만 인증은 Kerberos(Kerberos는 자격 증명을 안전하게 관리하는 데 사용됨) 및 LDAP(LDAP는 계정에 대한 권한 정보(예: 접근 허용 범위)를 저장하는 데 사용됨)를 사용하여 외부에서 제어할 수도 있습니다.
외부 인증은 Kerberos 및 LDAP에서 지원되는 인증입니다. Apache Cassandra 외부 인증을 지원하지 않습니다.
DataStax Enterprise만 Kerberos 및 LDAP를 사용한 외부 인증을 지원하며, 내부 인증은 두 가지 모두에서 지원됩니다. Apache Cassandra DataStax Enterprise도 포함됩니다.
인증 및 권한 부여 구성
In Cassandra기본적으로 인증 및 권한 부여 옵션은 비활성화되어 있습니다. 인증 및 권한 부여를 활성화하려면 cassandra.yaml 파일을 구성해야 합니다.
cassandra.yaml 파일을 열고 아래와 같이 내부 인증 및 권한 부여와 관련된 줄의 주석 처리를 해제하세요.
- cassandra.yaml 파일에서 기본적으로 인증자 값은 'AllowAllAuthenticator'로 설정되어 있습니다. 이 인증자 값을 'AllowAllAuthenticator'에서 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'로 변경하십시오.
- 마찬가지로 cassandra.yaml 파일에서 기본적으로 authorizer 값은 'AllowAllAuthorizer'로 설정되어 있습니다. 이 authorizer 값을 'AllowAllAuthorizer'에서 'com.datastax.bdp.cassandra.auth'로 변경하십시오.Cassandra승인자'.
저 두 클래스 이름은 DataStax Enterprise 값입니다. 오픈 소스에 관해서는... Apache Cassandra 동일한 설정이 적용됩니다 PasswordAuthenticator CassandraAuthorizer그러면 자격 증명은 다음과 같은 위치에 저장됩니다. system_auth 키스페이스의 복제 계수를 1보다 높게 설정해야 합니다.
로그인
이제 인증이 활성화되었습니다. 키스페이스에 액세스하려고 하면 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
사용자에게 부여할 수 있는 권한에는 다음과 같은 유형이 있습니다.
- 공통
- 바꾸다
- 승인
- 몹시 떠들어 대다
- DROP
- 수정
- 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 에이전트 포트 |
현재 드라이버는 9042 포트만 사용합니다. 9160 포트는 기존 Thrift 인터페이스에 사용되며 새 클러스터에서는 닫힌 상태로 유지될 수 있습니다.
JMX 인증 활성화
기본 설정으로는 CassandraJMX는 로컬 호스트에서만 접근할 수 있습니다. 원격으로 JMX에 접근하려면 cassandra-env.sh 파일에서 LOCAL_JMX 설정을 변경하고 인증 또는 SSL을 활성화하십시오.
JMX 인증을 활성화한 후 다음을 확인하세요. 운영센터 및 nodetool은 인증을 사용하도록 구성됩니다.
순서
JMX 인증을 활성화하려면 다음 단계를 따르세요.
- 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"
또한 cassandra-env.sh 파일에서 LOCAL_JMX 설정을 변경하십시오.
LOCAL_JMX=no
- /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 - jmxremote.password의 소유권을 실행하는 사용자로 변경하십시오. Cassandra 권한을 읽기 전용으로 변경하세요.
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- jmxremote.password를 편집하고 JMX 호환 유틸리티에 대한 사용자 및 비밀번호를 추가하십시오.
monitorRole QED controlRole R&D cassandra cassandrapassword
- 추가 Cassandra /jdk_install_location/lib/management/jmxremote.access에 대한 읽기 및 쓰기 권한이 있는 사용자
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- 다시 시작 Cassandra.
- 다음과 같이 nodetool을 실행하세요. Cassandra 사용자 및 비밀번호.
$ nodetool status -u cassandra -pw cassandra







