DataStax Enterpriseのセキュリティ・チェックリスト
DataStax Enterpriseデータベースを保護するために必要なセキュリティ対策のリスト。
DSE Advanced Security(DSE拡張セキュリティ)は、意図的な攻撃やユーザー・エラーによる潜在的な危険に対してDataStax Enterprise(DSE)データベースを強化する機能スイートです。これには、認証と権限管理、転送中のデータと保存されたデータの暗号化、およびデータ監査に対応した高度なメカニズムが含まれます。また、DataStax Enterpriseは、さまざまなパートナー・セキュリティ・ソリューションと互換性があり、業界固有の要件やその他の高度な要件に対応しています。
DSE Advanced Security(DSE拡張セキュリティ)は、社内標準に従ってActive Directory(AD)、Lightweight Directory Access Protocol(LDAP)、Kerberos、Public Key Infrastructure(PKI)、Key Management Interoperability Protocol(KMIP)などの既存の技術と集約的に統合されます。
DataStax Enterpriseには、エンタープライズレベルのデータベース用の高度なデータ保護機能が搭載されています。
機能 | データベース | Search | Analytics | Graph |
---|---|---|---|---|
認証(外部LDAPまたは内部) | あり | あり | あり | 一部あり |
Kerberos認証 | あり | あり | あり | あり |
権限管理(RBAC) | あり | 一部あり | 一部あり | あり |
行レベルのパーミッション(RLAC) | あり | なし | あり | なし |
クライアントとノード間の暗号化 | あり | あり | あり | あり |
ノード間の暗号化 | あり | あり | あり | あり |
透過的なデータ暗号化 | あり | あり | なし | あり |
データ監査 | あり | あり | 一部あり | あり |
DSEデータベースのセキュリティ・チェックリスト
DataStax Enterpriseセキュリティ機能を使用して、トランザクション・ノードのセキュリティを保護します。
DataStax Enterpriseデータベース・ノードのセキュリティ:
- 認証: 既知のユーザーのみにデータベースへの接続を制限します。DSEは、以下の認証方法を使用したユーザーの検証をサポートしています。
- 内部:内部データベースに格納されている認証情報
- LDAP:Active Directoryなどの外部LDAPサービス
- Kerberos:外部のKey Distribution Server(KDS)に対して確認されるMIT Kerberosチケット
「DSE Unified Authentication(DSE統合認証)の構成」を参照してください。
制約事項: DSE Unified Authentication(DSE統合認証)は、データベース接続でのみサポートされています。ゴシップなどのノード間通信を認証するには、ノード間のSSL証明書を使用します。 - 権限付与: ロール・ベース・アクセス制御(RBAC)を使用して、認証ユーザーのデータベース・リソースへのアクセスを制限します。DSEは、以下の方法を使用したロール管理をサポートしています。
- 内部データベース:ユーザー名またはプリンシパル名とロールの1-1マッピング
- LDAP:1対多のマッピング。LDAPにおいて、ユーザーがメンバーであるグループに一致するすべてのロールがユーザーに割り当てられます。
DataStaxは、認証が有効な場合のRBACのみをサポートしています。「ログインとユーザーのセットアップ」および「パーミッションの割り当て」を参照してください。
- アクティビティーの監査:
データベース・リソースのアクティビティーをログに記録して、監視します。「データベース監査のセットアップ」を参照してください。
- 透過的なデータ暗号化(TDE):保存されているデータを保護します。DSEは機密データの暗号化において以下のデータを暗号化します。
- テーブル全体(常にプレーン・テキストで格納されるパーティション・キーを除く)
- システム・テーブルなど、データが含まれているSSTable(system.batchlogやsystem.paxosなど)
- 検索インデックス
- ファイルベースのヒント(DSE 5.0以降)
- コミット・ログ
- dse.yamlおよびcassandra.yamlの機密性の高いプロパティ
外部のKMIPまたはローカル・サービスを使用してデータを暗号化します。「透過的なデータ暗号化について」を参照してください。
- SSLを使用した転送中のデータの暗号化
クライアントとデータベース間およびクラスター内のノード間の通信のセキュリティを保護します。「SSLの構成」を参照してください。
DSE Searchのセキュリティ・チェックリスト
DSE Searchのセキュリティ保護
server.xml
Tomcat server.xmlファイルのデフォルトの場所は、インストール・タイプによって異なります。パッケージ・インストール | /etc/dse/tomcat/conf/server.xml |
tarボール・インストール | installation_location/resources/tomcat/conf/server.xml |
DataStax Enterpriseでは、セキュアなエンタープライズ検索をサポートしています。DataStax Enterpriseのセキュリティ・チェックリストには、DSE Searchやその他の統合コンポーネントのセキュリティ機能についてまとめてあります。
- 認証DataStaxでは、Solr Admin UIを使用する場合とSolrJ APIを使用してcURLを含むコマンドを実行する場合はKerberos認証の使用を推奨しています。
- DSE SearchクライアントをKerberos認証で認証するには、Simple and Protected GSSAPI Negotiation Mechanism(SPNEGO)を使用します。
- Kerberos認証を使ってDSE Searchクラスターに対してSolrJ APIを使用するには、クライアント・アプリケーション側が、solrj-auth-README.mdファイルの記述に従って、SolrJ-AuthライブラリーとDataStax Enterprise SolrJコンポーネントを使用する必要があります。
- Solr Admin UIからコアへのアクセス(廃止予定)を定義します。
- 「DSE Unified Authentication(DSE統合認証)の有効化」に従い、CQLシェルを使用してインデックス管理タスクを実行します。
- 権限付与
検索インデックスに関するパーミッションを指定するには、認証済みユーザーにロールベース・アクセス制御(RBAC)を使用します。「ログインとユーザの設定」、「検索インデックスへのアクセスの制御」、および「Solr Admin UIから検索インデックスへのアクセス(廃止予定)」を参照してください。行レベル・アクセス制御(RLAC)を使用した行レベルのパーミッションの設定は、DSE SearchまたはDSE Graphでの使用はサポートされていません。
- アクティビティーの監査
データベース・リソースのアクティビティーをログに記録して、監視します。「データベース監査のセットアップ」を参照してください。
- 透過的なデータ暗号化(TDE)
保存されているデータを保護します。DSEでは、検索インデックスの機密データにKMIPまたはローカル暗号化を利用できます。「検索インデックスの暗号化」を参照してください。
- SSLを使用した転送中のデータの暗号化
DSE Searchノードでクライアントとノード間の暗号化を使用して、HTTPクライアントとCQLシェル間でSSLを使用する接続を暗号化します。「SSLの構成」を参照してください。
注: SSLを使用する特定のセキュリティ要件を満たすために、DSE Searchへのクライアント接続のIPアドレスを変更できます。たとえば、サブネットを分離するなどの目的で変更します。
- TDE:キャッシュされたデータは暗号化されません。暗号化はDSEデータベース側でのみ実行され、その間はパフォーマンスがわずかに低下します。
- 権限付与:パーミッションは、検索インデックス管理やデータベース内に格納されているデータへのアクセスなど、CQL要求に対してのみ適用されます。パーミッションは、キャッシュやインデックス構成などの検索ファイル・リソースには適用されません。
- 行レベル・アクセス制御(RLAC)を使用した行レベルのパーミッションの設定は、DSE Searchでの使用はサポートされていません。
- DSE SearchデータへのHTTPアクセスは、SSLを使用して保護されています(クライアントとノード間の暗号化)。SSLを使用したノード間の暗号化は、内部Solr通信を保護します。
DSE Analyticsのセキュリティ・チェックリスト
DSE Analyticsのセキュリティ保護。
- SSLを使用したクライアントとノード間の暗号化を有効にする。
- ノード間通信用のSparkポートは、外部トラフィックにさらさずに、セキュリティで保護されたネットワーク内で実行する必要があります。
- 認証:
- ノード間およびアプリケーションごとにシークレットは異なります。「Sparkノードの構成」を参照してください。
- 各アプリケーション・エグゼキューターのユーザー(実行ユーザー)と関連データの分離のネイティブ認証。「Sparkノードの構成」を参照してください。
- Spark UIの内部認証またはLDAP認証については、「WebインターフェイスでのSparkの監視」を参照してください。
- Sparkジョブのユーザー認証。DataStax Enterpriseは、Sparkの内部認証、LDAP認証、およびKerberos認証をサポートしています。
- 内部およびLDAP:DataStax Enterprise Sparkアプリケーションおよびツールについては、Spark認証コマンドを使用して認証情報を提供します。「内部認証を使用したspark-submitジョブの実行」を参照してください。
- Kerberos:Kerberosスキームの定義は、Sparkコンポーネントの相互認証に適用されるのではなく、SparkをDSEデータベースに接続するときに適用されます。Spark Web UIは保護されていないため、コマンドラインでエグゼキューターに渡したパラメーターの一部が表示される場合があります。ただし、DSEユーザー名、パスワード、およびデリゲーション・トークンは表示されません。デフォルトでは、Kerberosが唯一の認証スキームである場合はSpark UIにアクセスできないため、UI認証を無効にする必要があります。
- 権限付与:
Sparkジョブ用にデータベースから取得されたデータおよびSparkアプリケーション・サブミットのアクセス制御は、ロールベース・アクセス制御(RBAC)によって保護されます。要求を実行するユーザーは、ロールの割り当てによってデータにアクセスするためのパーミッションが付与されている必要があります。
注: Spark UIマスターおよびワーカーには権限管理を使用できません。 - 監査:
- Sparkで実行されるAnalytics操作はSparkイベント・ログに記録されます。有効にするには、「Sparkロギング・オプションの構成」を参照してください。
- CQL要求はデータベース・ログに記録されます。「データベース監査のセットアップ」を参照してください。
- 透過的なデータ暗号化(TDE):
TDEはデータベースに格納されているデータにのみ適用されます。DSEは、Sparkに使用され、DSEFSまたはローカル一時ディレクトリーに格納されているデータの暗号化をサポートしていません。
- SSL、TLS、またはSASLを使用した転送中のデータの暗号化:
SSL/TLS:クライアントとノード間の暗号化は、クライアントとコーディネーター・ノードの間にセキュアなチャネルを確立することで、SparkエグゼキューターとDSEデータベース間の接続で転送中のデータを保護します。SSLでは、共有認証サービスを設定する必要がありません。サーバー証明書の作成とクライアントとノード間のSSLの有効化が必要です。
SASL:Sparkのノード間およびクライアントからクラスターへの通信は、相互認証および暗号化のためのSASL Digest-MD5メカニズムを使用して暗号化できます。SASL暗号化は、Sparkドライバー、Sparkエグゼキューター、および外部シャッフル・サービス(
ExternalShuffleService
)の間の通信にも使用できます。詳細については、「Spark接続の保護」を参照してください。
DSE Graphのセキュリティ・チェックリスト
DataStax Enterpriseのセキュリティ機能を使用して、DSE Graphデータ全体、または部分的にセキュリティを保護します。
cassandra.yaml
cassandra.yamlファイルの場所は、インストールのタイプによって異なります。パッケージ・インストール | /etc/dse/cassandra/cassandra.yaml |
tarボール・インストール | installation_location/resources/cassandra/conf/cassandra.yaml |
- 認証:
トランザクション用データベースでDSE Unified Authentication(DSE統合認証)を有効にして、DSE Graphデータへのアクセスを認証ユーザーにのみ許可し、DSE Graphの
remote.yaml
で認証情報を構成します。「Kerberosを使用してDSE GraphとGremlin Consoleを使用する」を参照してください。 - 権限付与: DSE Graphのキースペースとテーブルのロールを定義して、グラフ・データへのアクセスを制限します。「Graphキースペースへのアクセスの制御」を参照してください。注: RBACはキャッシュされたデータには適用されません。行レベル・アクセス制御(RLAC)を使用した行レベルのパーミッションの設定は、DSE SearchまたはDSE Graphでの使用はサポートされていません。
DseGraphRpc
オブジェクトの実行パーミッションを定義したロールに付与します。 - アクティビティーの監査:
DSE Graph関連データベース・リソースのアクティビティーをログに記録して、監視します。「データベース監査のセットアップ」を参照してください。
- 透過的なデータ暗号化:
DSE Graphインデックス・テーブルのデータを暗号化します。「透過的なデータ暗号化」を参照してください。
注: キャッシュされたデータは暗号化されません。暗号化は、パフォーマンスにわずかに影響する場合があります。 - SSLを使用した暗号化データベース接続:
DSE Graphの転送中のデータを暗号化します。DSE Graphノードでクライアントとノード間のSSL暗号化を有効にするには、
client_encryption_options
をcassandra.yaml ファイルで設定します。「クライアントとノード間の暗号化」を参照してください。 - Graphサンドボックス:
Graphサンドボックスは、デフォルトで有効になっていて、Javaパッケージ、スーパークラス、タイプの実行を許可または禁止するよう構成できます。「Graphサンドボックス」を参照してください。
- GremlinクエリーがCQLなどのクエリー・タイプ間で区別されないという制限があります。
- CQLを使用する個々のパーミッションを使用して、パーミッションは頂点ラベル単位で適用され、CQLを使用してテーブル・レベルで登録されます。