cqlsh 구성을 포함하여 Cassandra 3.3으로 노드 간 및 클라이언트 간 암호화를 성공적으로 설정했습니다. 내 질문은 모든 것이 실제로 어떻게 작동하는지에 관한 것입니다.
두 경우 모두 각 행위자 (노드 및 클라이언트)에 대한 키 인증서를 제공해야합니다. 암호화 또는 인증에 사용됩니까? 나는 그것이 인증에만 사용되기를 강력히 기대하고 암호화를 위해 대칭 키가 생성됩니다. 이게 옳은 거니? 클라이언트-노드 암호화에서 노드와 클라이언트 모두 키 인증서가 필요하다는 것을 알기 때문에 교환이 서버 인증뿐만 아니라 클라이언트 인증이라고 가정합니다. 이 올바른지?
참고 : 위에서 저는 "인증"을 사용하여 행위자가 서로의 신원에 대한 세부 정보를 알지 못하는 것이 아니라 서로를 신뢰할 수 있음을 의미합니다. 이것은 Cassandra가 사용자를 인증하는 방법과 완전히 별개입니다.
노드 간 암호화를 위해 모든 노드에서 고유 한 자체 서명 인증서를 사용하고 클라이언트-노드 암호화를 위해 다른 고유 한 자체 서명 인증서를 사용할 것을 고려하고 있기 때문에 이러한 질문을하고 있습니다. 내 이해가 맞다면 이것은 암호화를 손상시키지 않을 것입니다. 이게 옳은 거니?
인증서 생성은 노드 간 통신에만 필수입니다. 각 SSL 서버에는 모든 통신을 서버에서만 읽을 수 있도록 자체 개인 키가 있어야합니다. 키와 함께 생성 된 공개 인증서는 서버를 인증하는 데 사용됩니다. 이는 Cassandra 노드가 man-in-the-middle 공격을 피하는 데 중요하며 로컬 노드의 신뢰 저장소를 통해 인증서를 인증 할 수 있는지 확인하여 구현됩니다.
클라이언트-노드 통신의 경우 인증은 선택 사항이며 .NET Framework를 활성화하지 않으면 인증서를 만들 필요가 없습니다 require_client_auth
. 이 경우 브라우저에서 SSL 보호 웹 사이트에 연결하는 것처럼 SSL 키가 투명하게 생성됩니다. 클라이언트 인증을 활성화해야하는지 여부는 Cassandra에서 사용자 로그인을 사용할 것인지 아니면 익명 로그인을 사용할 것인지에 따라 다릅니다. 사용자 이름과 암호를 사용하는 내부 Cassandra 인증 프로세스를 사용하는 경우 SSL 인증을 활성화하는데도 거의 사용되지 않습니다.
노드 간 암호화를 위해 모든 노드에서 고유 한 자체 서명 인증서를 사용하고 클라이언트-노드 암호화를 위해 다른 고유 한 자체 서명 인증서를 사용할 것을 고려하고 있기 때문에 이러한 질문을하고 있습니다.
각 노드에 대해 고유 한 자체 서명 된 인증서를 만들고 각 노드의 신뢰 저장소에 추가하는 것이 편하다면 그냥 가십시오. 이 작업을 처리하는 가장 간단하고 안전한 방법 일 수 있지만 대규모 클러스터에서는 매우 불편할 것입니다. 대체 옵션은 모든 노드에 대해 공통 CA를 통해 신뢰를 설정하는 것입니다. 이렇게하면 모든 자체 서명 된 인증서를 각 신뢰 저장소로 가져올 필요가 없습니다. CA를 사용하면 클러스터에 노드를 더 쉽게 추가 할 수 있지만 CA를 사용하여 새 인증서에 안전하게 서명하는 방법을 설정해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다