기본적으로 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 사용자 이름과 비밀번호를 업데이트해야 합니다. 이렇게 하면 Edge 작업 중에 발생하는 중단을 없애거나 최소화할 수 있습니다.
설치 중에 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단계를 반복합니다.