Part01-基础概念与理论知识
1.1 Kerberos认证原理
风哥教程参考Oracle官方文档Security部分。Kerberos是一种网络认证协议,用于在非安全网络环境中提供强身份验证。Oracle数据库支持Kerberos认证,允许用户使用Kerberos凭证登录数据库,无需再次输入密码。更多视频教程www.fgedu.net.cn
1.2 Oracle Kerberos架构
Oracle数据库的Kerberos认证架构包括:Kerberos Key Distribution Center (KDC)、Oracle数据库服务器、Oracle客户端和用户。用户首先向KDC认证,获取票据授予票(TGT),然后使用TGT获取访问Oracle服务的服务票。
Part02-生产环境规划与建议
2.1 系统环境要求
生产环境建议使用:Oracle Linux 7.9/8.x/9.x、Red Hat Enterprise Linux 7.9/8.x/9.x、Windows Server 2016/2019/2022。Kerberos版本要求:MIT Kerberos 5或Microsoft Active Directory Kerberos。
2.2 网络规划
确保KDC服务器、Oracle数据库服务器和客户端之间网络通信畅通,特别是Kerberos端口(默认88/UDP和88/TCP)。学习交流加群风哥微信: itpux-com
2.3 命名规范
服务主体名称(SPN)格式:oracle/hostname@REALM,其中hostname是数据库服务器的主机名,REALM是Kerberos领域名称(通常是大写的域名)。
Part03-生产环境项目实施方案
3.1 安装Kerberos客户端
在Oracle数据库服务器和客户端上安装Kerberos客户端软件。
# yum install -y krb5-libs krb5-workstation
# 在Windows上安装Kerberos客户端
# 通过控制面板→程序和功能→启用或关闭Windows功能→勾选”Kerberos客户端”
3.2 配置Kerberos
配置Kerberos客户端,指定KDC服务器和领域信息。
# vi /etc/krb5.conf
[libdefaults]
default_realm = FGEDU.NET.CN
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
udp_preference_limit = 100000
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
FGEDU.NET.CN = {
kdc = kdc.fgedu.net.cn
admin_server = kdc.fgedu.net.cn
}
[domain_realm]
.fgedu.net.cn = FGEDU.NET.CN
fgedu.net.cn = FGEDU.NET.CN
3.3 创建Kerberos服务主体
在KDC服务器上创建Oracle数据库的服务主体。
# ssh root@kdc.fgedu.net.cn
# 创建Kerberos服务主体
# kadmin.local
kadmin.local: addprinc -randkey oracle/db.fgedu.net.cn@FGEDU.NET.CN
# 导出服务主体密钥到keytab文件
kadmin.local: ktadd -k /etc/krb5.keytab oracle/db.fgedu.net.cn@FGEDU.NET.CN
kadmin.local: quit
3.4 配置Oracle数据库
配置Oracle数据库以启用Kerberos认证。
# scp root@kdc.fgedu.net.cn:/etc/krb5.keytab /etc/# 设置keytab文件权限
# chown oracle:oinstall /etc/krb5.keytab
# chmod 600 /etc/krb5.keytab
# 配置sqlnet.ora文件
# vi $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES = (BEQ, KERBEROS5)
SQLNET.KERBEROS5_CONF = /etc/krb5.conf
SQLNET.KERBEROS5_KEYTAB = /etc/krb5.keytab
SQLNET.KERBEROS5_REALM = FGEDU.NET.CN
SQLNET.KERBEROS5_CC_NAME = /tmp/krb5cc_%U
SQLNET.KERBEROS5_CLOCKSKEW = 300
3.5 创建数据库用户
在Oracle数据库中创建映射到Kerberos主体的用户。
$ sqlplus / as sysdba
SQL> CREATE USER fgedu_user IDENTIFIED EXTERNALLY AS ‘FGEDU.NET.CN’;User created.
SQL> GRANT CONNECT, RESOURCE TO fgedu_user;Grant succeeded.
SQL> CREATE TABLE fgedu.emp (id NUMBER, name VARCHAR2(50), salary NUMBER);Table created.
SQL> INSERT INTO fgedu.emp VALUES (1, ‘风哥1号’, 5000);1 row created.
SQL> COMMIT;Commit complete.
Part04-生产案例与实战讲解
4.1 客户端配置
配置Oracle客户端以使用Kerberos认证。
# vi $ORACLE_HOME/network/admin/tnsnames.ora
FGEDUDBS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db.fgedu.net.cn)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb)
)
)
4.2 获取Kerberos票据
在客户端上获取Kerberos票据。
$ kinit fgedu_user@FGEDU.NET.CN
Password for fgedu_user@FGEDU.NET.CN:
# 验证票据
$ klist
Ticket cache: KEYRING:persistent:1000:1000
Default principal: fgedu_user@FGEDU.NET.CN
Valid starting Expires Service principal
03/31/2026 10:00:00 03/31/2026 20:00:00 krbtgt/FGEDU.NET.CN@FGEDU.NET.CN
4.3 使用Kerberos认证登录数据库
使用Kerberos认证登录Oracle数据库,无需输入密码。
$ sqlplus /@FGEDUDBS
SQL*Plus: Release 19.0.0.0.0 – Production on Thu Mar 31 10:05:00 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Thu Mar 31 2026 10:00:00 +08:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0
SQL> SHOW USER;USER is “FGEDU_USER”
SQL> SELECT * FROM fgedu.emp;ID NAME SALARY
———- ————————————————– ———-
1 风哥1号 5000
SQL> INSERT INTO fgedu.emp VALUES (2, ‘风哥2号’, 6000);1 row created.
SQL> COMMIT;Commit complete.
4.4 验证Kerberos认证
验证数据库审计日志,确认使用Kerberos认证登录。学习交流加群风哥QQ113257174
$ sqlplus / as sysdba
SQL> SELECT username, authentication_type, action_name, to_char(timestamp, ‘YYYY-MM-DD HH24:MI:SS’) login_time
FROM dba_audit_session
WHERE username = ‘FGEDU_USER’
ORDER BY timestamp DESC;USERNAME AUTHENTICATION_TYPE ACTION_NAME LOGIN_TIME
—————————— ———————- ——————– ——————-
FGEDU_USER KERBEROS5 LOGON 2026-03-31 10:05:00
FGEDU_USER KERBEROS5 LOGOFF 2026-03-31 10:04:00
Part05-风哥经验总结与分享
1. Kerberos认证提供了强身份验证机制,适用于对安全性要求较高的生产环境。
2. 确保KDC服务器的高可用性,可以配置主备KDC。风哥提示:生产环境建议配置双KDC服务器,避免单点故障。
3. 定期更新Kerberos主体密钥,提高安全性。
4. 配置适当的票据生命周期,平衡安全性和用户体验。更多学习教程公众号风哥教程itpux_com
5. 在Windows环境下,可以集成Active Directory作为Kerberos KDC,简化管理。
6. 使用Kerberos认证时,需要确保系统时钟同步,避免票据验证失败。from oracle:www.itpux.com
