You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Spark及API访问开启安全认证的Ignite集群?

解决Ignite客户端认证与Spark写入Ignite的认证问题

我来帮你搞定这两个Ignite认证相关的问题,分两部分详细说明:

一、Java客户端连接Ignite的认证配置

你提到的IgniteConfiguration确实没有直接暴露设置用户名密码的方法,Ignite是通过**安全凭证提供者(SecurityCredentialsProvider)**来传递认证信息的。具体可以使用BasicSecurityCredentialsProvider这个实现类,把你的超级用户凭证封装进去,再配置到IgniteConfiguration中。

修改后的代码示例:

import org.apache.ignite.plugin.security.BasicSecurityCredentialsProvider;

// ... 其他导入 ...

IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setClientMode(true);

// 配置发现SPI
TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
TcpDiscoveryVmIpFinder vmIpFinder = new TcpDiscoveryVmIpFinder();
vmIpFinder.setAddresses(Arrays.asList("localhost"));
discoSpi.setIpFinder(vmIpFinder);
cfg.setDiscoverySpi(discoSpi);

// 启用认证并设置凭证
cfg.setAuthenticationEnabled(true);
cfg.setSecurityCredentialsProvider(new BasicSecurityCredentialsProvider("ignite", "ignite"));

ignite = Ignition.start(cfg);

启动客户端时,Ignite会自动用这个提供者封装的凭证和集群完成认证。

二、Spark DataFrame写入Ignite的认证配置

Spark Ignite连接器支持两种方式传递认证凭证,你可以根据场景选择:

方式1:通过DataFrame的Option直接设置

使用IgniteDataFrameSettings类提供的常量,在write操作中添加用户名和密码的配置项:

import org.apache.ignite.spark.IgniteDataFrameSettings;

// ... 其他代码 ...

df.write.format(IgniteDataFrameSettings.FORMAT_IGNITE)
    .option(IgniteDataFrameSettings.OPTION_CONFIG_FILE, "default-config.xml")
    .option(IgniteDataFrameSettings.OPTION_TABLE, "sampleTable")
    .option(IgniteDataFrameSettings.OPTION_CREATE_TABLE_PRIMARY_KEY_FIELDS, "PK")
    .option(IgniteDataFrameSettings.OPTION_STREAMER_ALLOW_OVERWRITE, "true")
    // 添加认证凭证
    .option(IgniteDataFrameSettings.IGNITE_SECURITY_CREDENTIALS_USERNAME, "ignite")
    .option(IgniteDataFrameSettings.IGNITE_SECURITY_CREDENTIALS_PASSWORD, "ignite")
    .mode(saveMode)
    .save();

方式2:在XML配置文件中配置凭证

如果不想在代码中硬编码密码,可以修改你的default-config.xml,添加安全凭证提供者的配置:

<bean class="org.apache.ignite.configuration.IgniteConfiguration">
    <!-- 其他已有配置 -->
    <property name="authenticationEnabled" value="true"/>
    <!-- 添加认证凭证配置 -->
    <property name="securityCredentialsProvider">
        <bean class="org.apache.ignite.plugin.security.BasicSecurityCredentialsProvider">
            <constructor-arg value="ignite"/>
            <constructor-arg value="ignite"/>
        </bean>
    </property>
    <!-- 发现SPI等其他配置 -->
</bean>

Spark连接器加载这个配置文件时,会自动读取凭证并完成认证。

注意:生产环境中尽量避免硬编码密码,建议通过环境变量、密钥管理服务等方式动态获取凭证,保障安全性。

内容的提问来源于stack exchange,提问作者Falcon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:10:05