기본적으로 Cassandra는 인증이 사용 설정되지 않은 상태로 설치됩니다. 즉, 누구나 Cassandra에 액세스할 수 있습니다. Edge를 설치한 후 또는 설치 프로세스의 일부로 인증을 사용 설정할 수 있습니다.
Cassandra CREATE
/ALTER
/DROP ROLES
문을 사용하여 역할을 추가, 삭제, 수정할 수 있습니다. 자세한 내용은 다음을 참조하세요.
일반적인 고려사항
- Cassandra 인증을 사용 설정하는 순간 Cassandra에서 기본 슈퍼 사용자 cassandra (비밀번호 cassandra)를 자동으로 만듭니다. 널리 알려진 슈퍼 사용자이며 프로덕션 요구사항에 이 사용자를 사용해서는 안 됩니다. 또한 이 최고 사용자를 통해 인증하려면 과반수 일치가 필요합니다. 따라서 이 사용자를 통해 인증하는 Cassandra 연결에는 더 엄격한 일관성이 필요하므로 성능이 느려지고 내결함성이 떨어집니다.
- 일반적인 워크플로는 Cassandra에서 인증을 사용 설정하는 동시에 구성 파일을 통해 맞춤 사용자 이름과 비밀번호를 전달하는 것입니다. 이렇게 하면 필요에 따라 안전하게 사용할 수 있는 맞춤 사용자와 비밀번호가 생성되며 이러한 사용자를 통해 인증하면 과반수 일관성 제한이 없습니다.
- 맞춤 사용자가 생성되었더라도 Cassandra는 기본 cassandra 슈퍼 사용자를 계속 생성하며, 슈퍼 사용자를 통해 Cassandra 클러스터에 액세스할 수 있습니다. 일반적으로 Apigee에서 전체적으로 Cassandra 인증을 사용 설정한 후 ALTER ROLE 명령어를 사용하여 이 cassandra 사용자의 비밀번호를 기본 cassandra가 아닌 다른 비밀번호로 변경해야 합니다. 나중에 참고할 수 있도록 이 비밀번호를 기록해 둡니다.
- edge-* 구성요소가 인증에 사용하는 역할의 비밀번호를 변경하면 즉시 서비스가 중단되므로 변경해서는 안 됩니다. 대신 새 사용자를 만들고 새 사용자를 사용하도록 edge-* 구성요소를 수정한 후 완료되면 DROP ROLE 명령어를 사용하여 이전 사용자를 삭제해야 합니다.
- Cassandra 인증에 edge-* 구성요소에서 사용하는 역할을 변경하려면 다음 단계를 따르세요.
- 인증 사용 설정 섹션의 단계에 따라 새 사용자를 만듭니다. 클러스터에서 인증이 이미 사용 설정되어 있고 cassandra 사용자의 비밀번호를 변경한 경우
CASS_EXISTING_USERNAME
및CASS_EXISTING_PASSWORD
를 통해 기존 사용자의 사용자 이름/비밀번호 조합을 전달해야 합니다. - 완료되면 cqlsh를 통해 이전 사용자와 새 사용자를 통해 모두 Cassandra에 연결할 수 있는지 확인합니다.
- Cassandra에 연결하는 Edge 구성요소 업데이트의 안내에 따라 새로 만든 사용자를 사용하여 Cassandra에 연결하도록 모든 edge-* 구성요소를 가리킵니다.
- 마지막으로 모든 구성요소가 새 사용자를 사용하여 Cassandra와 통신하면
DROP ROLE
명령어를 사용하여 이전 사용자를 삭제할 수 있습니다. 기본 cassandra 역할은 삭제하면 안 됩니다. edge-* 구성요소에서 Cassandra와 통신하는 데 사용하지 않는 맞춤으로 만든 모든 역할을 삭제할 수 있습니다.
- 인증 사용 설정 섹션의 단계에 따라 새 사용자를 만듭니다. 클러스터에서 인증이 이미 사용 설정되어 있고 cassandra 사용자의 비밀번호를 변경한 경우
- Edge 구성요소를 설치하거나 업그레이드하는 데 사용하는 구성 파일에서 작동하는 Cassandra 사용자 이름과 비밀번호를 업데이트해야 합니다. 이렇게 하면 에지 작업 중에 발생하는 중단을 없애거나 최소화할 수 있습니다.
설치 중에 Cassandra 인증 사용 설정
설치 시 Cassandra 인증을 사용 설정할 수 있습니다.
설치 시 Cassandra 인증을 사용 설정하려면 모든 Cassandra 노드의 구성 파일에 CASS_AUTH
속성을 포함합니다.
CASS_AUTH=y # The default value is n.
다음 Edge 구성요소가 Cassandra에 액세스합니다.
- 관리 서버
- 메시지 프로세서
- 라우터
- Qpid 서버
- Postgres 서버
이러한 구성요소를 설치할 때는 구성 파일에서 사용자 이름과 비밀번호를 설정해야 합니다.
CASS_USERNAME=cassandra_username CASS_PASSWORD=cassandra_password
Cassandra를 설치한 후 Cassandra 사용자 인증 정보를 변경할 수 있습니다. 하지만 관리 서버, 메시지 프로세서, 라우터, Qpid 서버 또는 Postgres 서버를 이미 설치한 경우 새 사용자 인증 정보를 사용하도록 이러한 구성요소도 업데이트해야 합니다.
Cassandra를 설치한 후 Cassandra 사용자 인증 정보를 변경하려면 다음 단계를 따르세요.
cqlsh
도구와 기본 사용자 인증 정보를 사용하여 Cassandra 노드 중 하나에 로그인합니다. 하나의 노드에서만 비밀번호를 변경하면 링의 모든 Cassandra 노드로 브로드캐스트됩니다./opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra_username -p cassandra_password
각 항목의 의미는 다음과 같습니다.
- cassIP는 Cassandra 노드의 IP 주소입니다.
- 9042는 기본 Cassandra 포트입니다.
- cqlsh> 프롬프트에서 다음 명령어를 실행하여 비밀번호를 업데이트합니다.
ALTER ROLE <username> WITH PASSWORD='
'; - 다음 예와 같이
cqlsh
도구를 종료합니다.exit
- 관리 서버, 메시지 프로세서, 라우터, Qpid 서버 또는 Postgres 서버를 아직 설치하지 않은 경우 구성 파일에서 다음 속성을 설정한 다음 해당 구성요소를 설치합니다.
CASS_USERNAME=cassandra_username CASS_PASSWORD=new_cassandra_password
- 관리 서버, 메시지 프로세서, 라우터, Qpid 서버 또는 Postgres 서버를 이미 설치한 경우 새 비밀번호를 사용하도록 이러한 구성요소를 업데이트하는 절차는 Edge 비밀번호 재설정을 참고하세요.
설치 후 Cassandra 인증 사용 설정
설치 후 인증을 사용 설정하려면 다음 단계를 따르세요.
- Cassandra 사용자 이름 및 비밀번호로 Cassandra에 연결하는 모든 Edge 구성요소를 업데이트합니다.
- 모든 Cassandra 노드에서 인증을 사용 설정하고 하나의 노드에서 Cassandra 사용자 이름과 비밀번호를 설정합니다. Cassandra 노드 하나에서 사용자 인증 정보를 변경하기만 하면 링의 모든 Cassandra 노드로 브로드캐스트됩니다.
Cassandra에 연결되는 Edge 구성요소 업데이트
다음 절차에 따라 Cassandra와 통신하는 모든 Edge 구성요소를 새 사용자 인증 정보로 업데이트합니다. Cassandra 사용자 인증 정보를 실제로 업데이트하기 전에 이 단계를 실행합니다.
- 관리 서버 노드에서 다음 명령어를 실행합니다.
/opt/apigee/apigee-service/bin/apigee-service edge-management-server store_cassandra_credentials -u cassandra_username -p cassandra_password
원하는 경우 새 사용자 이름과 비밀번호가 포함된 파일을 명령어에 전달할 수 있습니다.
apigee-service edge-management-server store_cassandra_credentials -f configFile
여기서 configFile에는 다음이 포함됩니다.
CASS_USERNAME=cassandra_username # Default is cassandra CASS_PASSWORD='cassandra_password' # Default is cassandra; wrap in single quotes if it includes special chars
이 명령어는 관리 서버를 자동으로 다시 시작합니다.
- 다음 서비스 각각에 대해 1단계를 반복합니다.
- 모든 메시지 프로세서
- 모든 라우터
- 모든 Qpid 서버 (edge-qpid-server)
- Postgres 서버 (edge-postgres-server)
각 서비스에 대해 1단계를 반복할 때 위 명령어에서
edge-management-server
를 적절한 서비스 이름으로 바꿉니다. 예를 들어 라우터 서비스의 단계를 실행할 때는 다음 명령어를 사용합니다./opt/apigee/apigee-service/bin/apigee-service edge-router store_cassandra_credentials -u cassandra -p cassandra
인증 사용 설정
다음 절차에 따라 Cassandra 인증을 사용 설정하고 사용자 이름과 비밀번호를 설정합니다.
- 아래 콘텐츠로 무음 구성 파일을 만듭니다.
# Specify IP address or DNS name of cassandra node IP1=192.168.1.1 IP2=192.168.1.2 IP3=192.168.1.3 # Must resolve to IP address or DNS name of host HOSTIP=$(hostname -i) # Set to ‘y’ to enable Cassandra authentication. CASS_AUTH=y # Possible values are ‘y/n’ # Cassandra username. If it does not exist, this user would be created as a SUPERUSER CASS_USERNAME=cassandra_username # Default value is cassandra - don't use for production # Cassandra Password. If CASS_USERNAME does not exist, create SUPERUSER with this as password CASS_PASSWORD=cassandra_password # Default value is cassandra - don't use for production # Space-separated IP/DNS names of the Cassandra hosts CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1" # Username of an existing C* user. Only needed if you have disabled or changed details of the default cassandra user(‘cassandra’) CASS_EXISTING_USERNAME=existing_cassandra_username # Password of an existing C* user. Only needed if you have disabled or change password of the default cassandra user(‘cassandra’) CASS_EXISTING_PASSWORD=existing_cassandra_password # Cassandra port CASS_PORT=9042 # The default port is 9042.
첫 번째 Cassandra 노드에 로그인하고 다음 명령어를 실행합니다.
apigee-service apigee-cassandra enable_cassandra_authentication -f CONFIG
원하는 경우 다음 예와 같이 속성을 명령어 인수로 스크립트에 전달할 수 있습니다.
CASS_AUTH=y HOSTIP=$(hostname -i) CASS_PORT=9042 CASS_EXISTING_USERNAME=existing_cassandra_username CASS_EXISTING_PASSWORD=existing_cassandra_password CASS_USERNAME=cassandra_username CASS_PASSWORD=cassandra_password CASS_HOSTS="192.168.1.1:1,1 192.168.1.2:1,1 192.168.1.3:1,1" apigee-service apigee-cassandra enable_cassandra_authentication
참고:
- 기본 Cassandra 사용자 인증 정보의 경우 위 명령어는 Cassandra 인증을 사용 설정하고 Cassandra를 다시 시작합니다.
- 기본이 아닌 사용자 인증 정보의 경우 이 명령어는 복제 인수도 변경하고, 슈퍼 사용자를 만들고,
system_auth keyspace
에서 수리를 실행합니다.
- 모든 Cassandra 노드에서 1단계와 2단계를 반복합니다.