Oracle LiveLabs实验:DB Security - Unified Auditing

2024-02-04 12:18

本文主要是介绍Oracle LiveLabs实验:DB Security - Unified Auditing,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

此实验申请地址在这里,时间为2小时。

实验帮助在这里。

本实验使用的数据库为19.13。

Introduction

本研讨会介绍 Oracle Unified Auditing 的功能。 它使用户有机会学习如何配置此功能以审计数据库活动。

混合模式审计是新安装的数据库中的默认审计。 混合模式审计支持传统审计工具(即来自早于 12c 版本的审计工具)和新审计工具(统一审计)。
混合模式旨在引入统一审计,以便您了解它的工作原理以及它的细微差别和好处。 混合模式使您能够迁移现有应用程序和脚本以使用统一审计。 一旦您决定使用纯统一审计,您可以重新链接 Oracle 二进制文件并打开统一审计选项,从而将其作为 Oracle 数据库运行的唯一审计工具。 如果您决定恢复到混合模式,您也可以。
在这个环境下,我们已经把这个Oracle数据库迁移到了纯统一审计模式。

目标

  • 在您的数据库上启用/禁用统一审计
  • 查看不同的审计用例

Task 1: Display the current audit settings

以下显示的是PDB1中的信息:

sudo su - oracle
cd $DBSEC_LABS/unified-auditing
./ua_current_audit_settings.sh

这个脚本的执行结果如下,实际包括4部分:

-- 这意味着我们的数据库处于“纯”统一审计模式,您不再使用传统的审计能力
select parameter, value from v$option where PARAMETER = 'Unified Auditing';
PARAMETER                                          VALUE
-------------------------------------------------- ----------------------------------------
Unified Auditing                                   TRUE-- 第二个查询显示存在多少统一审计策略以及与每个策略关联的审计相关属性的数量
select policy_name, count(*) audited_attributes from audit_unified_policies group by policy_name order by policy_name;POLICY_NAME                              AUDITED_ATTRIBUTES
---------------------------------------- ------------------
APP_USER_NOT_APP_SERVER                                   1
EMPSEARCH_SELECT_USAGE_BY_PETE                            1
ORA_ACCOUNT_MGMT                                          9
ORA_ADS$_ADMIN_USER_ACTIVITY                              1
ORA_ADS$_CRITICAL_DB_ACTIVITY                            50
ORA_ADS$_DB_SCHEMA_CHANGES                               84
ORA_ADS$_LOGON_EVENTS                                     2
ORA_ADS$_LOGON_FAILURES                                   2
ORA_ADS$_SYS_TOP_ACTIVITY                                 1
ORA_AV$_ADMIN_USER_ACTIVITY                               1
ORA_AV$_CRITICAL_DB_ACTIVITY                             49
ORA_AV$_DB_SCHEMA_CHANGES                                84
ORA_AV$_SYS_TOP_ACTIVITY                                  1
ORA_CIS_RECOMMENDATIONS                                  35
ORA_DATABASE_PARAMETER                                    3
ORA_DV_AUDPOL                                          2180
ORA_DV_AUDPOL2                                           19
ORA_LOGON_FAILURES                                        1
ORA_RAS_POLICY_MGMT                                      35
ORA_RAS_SESSION_MGMT                                     14
ORA_SECURECONFIG                                         49
PRIVILEGED_ACTIONS                                        122 rows selected.-- 显示启用了哪些统一审计策略,也就是说上一个查询中存在该策略并不意味着它已启用
-- 使用统一审计策略分为两步:创建和启用审计策略
-- 注意:其中有一些重复的,所以行数才会比上一个多
-- 如果查distinct,输出和上一个是一样的。这表示创建的均启用了select POLICY_NAME as ENABLED_POLICIES from AUDIT_UNIFIED_ENABLED_POLICIES order by 1;ENABLED_POLICIES
----------------------------------------
APP_USER_NOT_APP_SERVER
EMPSEARCH_SELECT_USAGE_BY_PETE
ORA_ACCOUNT_MGMT
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_ADMIN_USER_ACTIVITY
ORA_ADS$_CRITICAL_DB_ACTIVITY
ORA_ADS$_DB_SCHEMA_CHANGES
ORA_ADS$_LOGON_EVENTS
ORA_ADS$_LOGON_FAILURES
ORA_ADS$_SYS_TOP_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_ADMIN_USER_ACTIVITY
ORA_AV$_CRITICAL_DB_ACTIVITY
ORA_AV$_DB_SCHEMA_CHANGES
ORA_AV$_SYS_TOP_ACTIVITY
ORA_CIS_RECOMMENDATIONS
ORA_DATABASE_PARAMETER
ORA_DV_AUDPOL
ORA_DV_AUDPOL2
ORA_LOGON_FAILURES
ORA_RAS_POLICY_MGMT
ORA_RAS_SESSION_MGMT
ORA_SECURECONFIG
PRIVILEGED_ACTIONS40 rows selected.-- 第 4 个查询显示基于上下文的审计
-- 我们有一个名为 TICKETINFO 的策略,它捕获名为 TICKET_ID 的属性
-- 此信息将在 UNIFIED_AUDIT_TRAIL 视图的 APPLICATION_CONTEXTS 列中查看
select NAMESPACE, ATTRIBUTE, USER_NAME from AUDIT_UNIFIED_CONTEXTS order by 1,2,3;NAMESPACE                           ATTRIBUTE                           USER_NAME
----------------------------------- ----------------------------------- -------------------------
TICKETINFO                          TICKET_ID                           ALL USERS

显示谁具有 AUDIT_ADMIN 和 AUDIT_VIEWER 角色:

$ ./ua_who_audit_roles.sh

实际执行和输出如下:

select b.name con_name, a.grantee, a.granted_role, a.admin_option, a.delegate_option, a.default_role, a.common, a.inheritedfrom cdb_role_privs a, v\$containers b where a.con_id = b.con_idand a.granted_role in ('AUDIT_ADMIN','AUDIT_VIEWER')order by 1,2,3;CON_NAME     GRANTEE                   GRANTED_ROLE        ADMIN_OPTION DELEGATE_OPTION  DEFAULT_ROLE   COMMON    INHERITED
------------ ------------------------- ------------------- ------------ ---------------- -------------- --------- ---------
CDB$ROOT     C##ZEUS                   AUDIT_ADMIN         NO           NO               YES            YES       NO
CDB$ROOT     C##ZEUS                   AUDIT_VIEWER        NO           NO               YES            YES       NO
CDB$ROOT     SYS                       AUDIT_ADMIN         YES          NO               YES            YES       NO
CDB$ROOT     SYS                       AUDIT_VIEWER        YES          NO               YES            YES       NO
PDB1         AVAUDITUSER               AUDIT_ADMIN         NO           NO               YES            NO        NO
PDB1         AVAUDITUSER               AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB1         C##ZEUS                   AUDIT_ADMIN         NO           NO               YES            YES       YES
PDB1         C##ZEUS                   AUDIT_VIEWER        NO           NO               YES            YES       YES
PDB1         DBSAT_ADMIN               AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB1         ORA_DSCS_ASSESSMENT       AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB1         ORA_DSCS_AUDIT_COLLECTION AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB1         ORA_DSCS_AUDIT_SETTING    AUDIT_ADMIN         NO           NO               YES            NO        NO
PDB1         SYS                       AUDIT_ADMIN         YES          NO               YES            YES       YES
PDB1         SYS                       AUDIT_VIEWER        YES          NO               YES            YES       YES
PDB2         AVAUDITUSER               AUDIT_ADMIN         NO           NO               YES            NO        NO
PDB2         AVAUDITUSER               AUDIT_VIEWER        NO           NO               YES            NO        NO
PDB2         C##ZEUS                   AUDIT_ADMIN         NO           NO               YES            YES       YES
PDB2         C##ZEUS                   AUDIT_VIEWER        NO           NO               YES            YES       YES
PDB2         SYS                       AUDIT_ADMIN         YES          NO               YES            YES       YES
PDB2         SYS                       AUDIT_VIEWER        YES          NO               YES            YES       YES20 rows selected.

显示您连接到的数据库的现有审计记录(PDB1):

$ ./ua_query_existing_audit_records.sh-- View Audit Data for pdb1-- 审计时间段
-- select min(event_timestamp) oldest_audit_record, max(event_timestamp) newest_audit_record from unified_audit_trail;
OLDEST_AUDIT_RECORD                      NEWEST_AUDIT_RECORD
---------------------------------------- ----------------------------------------
08-DEC-21 04.46.53.279529 PM             02-APR-22 06.14.35.799402 AM-- 审计记录数
select count(*) total_unified_audit_records from unified_audit_trail;
TOTAL_UNIFIED_AUDIT_RECORDS
---------------------------142-- 审计action分类
select action_name, count(*) from unified_audit_trail group by action_name order by action_name;ACTION_NAME                                COUNT(*)
---------------------------------------- ----------
ALTER SESSION                                     1
COMMIT                                            8
EXECUTE                                           1
LOGOFF                                            7
LOGOFF BY CLEANUP                                12
LOGON                                             9
SELECT                                          1157 rows selected.

最后,展示了 DBMS_AUDIT_MGMT 包的一些细节:

./ua_dbms_audit_mgmt_settings.sh

实际执行和输出如下:

-- 统一审计表是分区表,按季度分区的,目的是能加速查询和写入
select partition_name, tablespace_name, high_value from dba_tab_partitions where table_name = 'AUD\$UNIFIED';
PARTITION_NAME       TABLESPACE_NAME      HIGH_VALUE
-------------------- -------------------- ------------------------------------------------------------
SYS_P1908            SYSAUX               TIMESTAMP' 2022-02-01 00:00:00'
SYS_P1928            SYSAUX               TIMESTAMP' 2022-05-01 00:00:00'-- 函数 DBMS_AUDIT_MGMT.GET_AUDIT_COMMIT_DELAY 以秒数形式返回审计提交延迟时间
-- 审计提交延迟时间是将审计记录提交到数据库审计跟踪所需的最长时间
-- 如果提交审计记录的时间比审计提交延迟时间定义的时间长,则审计记录的副本将写入操作系统 (OS) 审计跟踪
select DBMS_AUDIT_MGMT.GET_AUDIT_COMMIT_DELAY from dual;
GET_AUDIT_COMMIT_DELAY
----------------------15-- 第3个查询没有结果,因为 SET_LAST_ARCHIVE_TIMESTAMP 过程仅在只读数据库上可用。-- 为操作系统审核文件配置的最长期限为:5

Task 2: Audit Non App Usage

在本实验中,您将审核谁在应用程序之外使用 EMPLOYEESEARCH_PROD 对象。

确定我们信任的数据库连接。 我们将从 Glassfish 应用程序生成一些活动并查看与会话相关的信息

执行以下代码,在提示时不要回车:

cd $DBSEC_LABS/unified-auditing
./ua_query_employeesearch_usage.sh

上面这个脚本的目的就是捕获v$session中的输出:

SELECT osuser, machine, module FROM v$session WHERE username = 'EMPLOYEESEARCH_PROD';

在浏览器中通过应用访问数据库:

  • 网址: http://<YOUR_DBSEC-LAB_VM_PUBLIC_IP>:8080/hr_prod_pdb1
  • http://129.154.203.54:8080/hr_prod_pdb1
  • 用户名和口令:hradmin/Oracle123
  • 执行操作(更改搜索条件,执行2-3次):Search Employees,Search

回到上一终端,按回车,输出如下:

CON_NAME
------------------------------
PDB1
USER is "SYS". List the session for the user "EMPLOYEESEARCH_PROD"OSUSER             MACHINE                                                 MODULE
------------------ ------------------------------------------------------- -----------------------------------
oracle             dbsec-lab                                               JDBC Thin Client
oracle             dbsec-lab                                               JDBC Thin Client
oracle             dbsec-lab                                               JDBC Thin Client3 rows selected.

使用SQL Plus产生一些负载,即查询employeesearch_prod.demo_hr_employees表:

./ua_query_employeesearch.sh

创建统一审计策略:

./ua_create_audit_policy.sh

统一审计策略将捕获与您的机器相关的详细信息以创建 WHEN 子句。

在这里,我们基于 SYS_CONTEXT 变量作为标准创建了审计策略 AUDIT_EMPLOYEESEARCH_USAGE:

  • SESSION_USER = “EMPLOYEESEARCH_PROD”
  • AND OS_USER != “oracle”
  • OR MODULE != “JDBC Thin Client”
  • 或 HOST!=“dbsec-lab.dbsecvcn.oraclevcn.com”

此审核策略将审核所有尝试从不安全路径(例如,官方 Web 应用程序以外的路径)访问 EMPLOYEESEARCH_PROD.DEMO_HR_USERS 和 EMPLOYEESEARCH_PROD.DEMO_HR_EMPLOYEES 表的会话。

从以上脚本我们学到:

  • NOAUDIT POLICY 禁用审计策略
  • DROP AUDIT POLICY删除审计策略
  • CREATE AUDIT POLICY创建审计策略
  • 表AUDIT_UNIFIED_POLICIES存储审计策略
  • 策略的名字为:AUDIT_EMPLOYEESEARCH_USAGE

实际的审计策略规则如下:

SYS_CONTEXT('USERENV','SESSION_USER') = 'EMPLOYEESEARCH_PROD'
AND (SYS_CONTEXT('USERENV','OS_USER') != 'oracle'
OR SYS_CONTEXT('USERENV','MODULE') != 'JDBC Thin Client'
OR SYS_CONTEXT('USERENV','HOST') != 'dbsec-lab.dbsecvcn.oraclevcn.com')

启用统一审计策略,使用命令AUDIT POLICY。可查询表AUDIT_UNIFIED_ENABLED_POLICIES中确认:

./ua_enable_audit_policy.sh

运行其他查询以生成流量并查看是否生成了审计记录。首先用浏览器访问,方法同前。

./ua_query_employeesearch_usage.sh
./ua_query_audit_records.sh

由于这是正规的路径,因此此时没有审计记录:

. List the Unified Audit of the Audit policy "AUDIT_EMPLOYEESEARCH_USAGE"no rows selected

然后用SQL Plus执行:

./ua_query_employeesearch.sh
./ua_query_audit_records.sh

这一回有输出了:

. List the Unified Audit of the Audit policy "AUDIT_EMPLOYEESEARCH_USAGE"EVENT_TIMESTAMP                 OS_USERNAME  USERHOST             DBUSERNAME           CLIENT_PROGRAM_NAME               ACTION_NAME
------------------------------- ------------ -------------------- -------------------- --------------------------------- ------------
RETURN_CODE OBJECT_SCHEMA        OBJECT_NAME          SQL_TEXT
----------- -------------------- -------------------- --------------------------------------------------
05-APR-22 04.07.25.774033 AM    oracle       dbsec-lab            EMPLOYEESEARCH_PROD  sqlplus@dbsec-lab (TNS V1-V3)     SELECT0 EMPLOYEESEARCH_PROD  DEMO_HR_EMPLOYEES    select userid, firstname, lastname, emptype,position, ssn, sin, ninofrom emp

最后,删除统一审计策略:

./ua_delete_audit_policy.sh

其过程为:

  • NOAUDIT POLICY 禁用审计策略
  • DROP AUDIT POLICY删除审计策略
  • dbms_audit_mgmt.clean_audit_trail删除审计条目

Task 3: Audit Database Role Usage

审计角色时,Oracle 数据库会审计直接授予该角色的所有系统权限。 您可以审计任何角色,包括用户定义的角色。 如果您使用 ROLES 审计选项为角色创建通用统一审计策略,那么您必须仅在角色列表中指定通用角色(common role)。

启用此类策略后,Oracle 数据库会审计通常直接授予公共角色的所有系统权限。 本地授予普通角色的系统权限不会被审计。 要查找角色是否被普遍授予(commonly granted),请查询 DBA_ROLES 数据字典视图。 要查看授予角色的权限是否被普遍授予,请查询 ROLE_SYS_PRIVS 视图。

首先,创建实例角色MGR_ROLE并赋予权限(后续实际并未用到):

./ua_create_role.sh

创建审计角色MGR_ROLE的策略AUD_ROLE_POL:

./ua_create_role_audit_policy.sh

实际就一个语句:

create audit policy aud_role_pol ROLES mgr_role;

创建用户dba_junior并赋予DBA角色:

./ua_create_junior_dba.sh

创建审计角色DBA的策略AUD_DBA_POL:

./ua_create_dba_audit_policy.sh

实际就一个语句:

create audit policy aud_dba_pol ROLES dba;

启用 MGR_ROLE 和 DBA 角色使用的审计策略(audit policy …):

./ua_enable_audit_policies.sh

查看启用的审计策略(查看AUDIT_UNIFIED_POLICIES和AUDIT_UNIFIED_ENABLED_POLICIES表):

./ua_view_audit_policies.sh

以用户SYS和dba_junior执行将显示在统一审计跟踪中的 SQL 语句:

./ua_generate_audits.sh

操作包括增删表空间,修改系统参数。最后需要Flush Unified Audit Trail:

exec SYS.DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;

显示和审计策略相关的审计条目(即查询表unified_audit_policies):

./ua_review_generated_audits.sh

输出为:

. View Unified Audit dataACTION_NAME          DBUSERNAME ACTION_NAME          OBJECT_SCH OBJECT_NAME          SQL_TEXT
-------------------- ---------- -------------------- ---------- -------------------- --------------------------------------------------------------------------------
ALTER SYSTEM         DBA_JUNIOR ALTER SYSTEM                                         alter system set job_queue_processes=100
ALTER SYSTEM         DBA_JUNIOR ALTER SYSTEM                                         alter system set job_queue_processes=200
LOGON                DBA_JUNIOR LOGON
DROP TABLESPACE      SYS        DROP TABLESPACE                 TEST                 drop tablespace test including contents and datafiles
CREATE TABLESPACE    SYS        CREATE TABLESPACE               TEST                 create tablespace test datafile '/u01/oradata/cdb1/pdb1/test01.dbf' size 10m

删除审计策略:

./ua_delete_role_audit_policy.sh

实际执行的SQL和输出如下:

. What is auditable for Data Pump
SELECT name FROM auditable_system_actions WHERE component = 'Datapump';NAME
----------------------------------------------------------------
EXPORT
IMPORT
ALL. List the current Audit policies
select * from AUDIT_UNIFIED_ENABLED_POLICIES where POLICY_NAME like '%DP%';POLICY_NAME          ENABLED_OPTION  ENTITY_NAME          ENTITY_ SUC FAI
-------------------- --------------- -------------------- ------- --- ---
ORA_DV_AUDPOL2       BY USER         ALL USERS            USER    YES YES
ORA_DV_AUDPOL        BY USER         ALL USERS            USER    YES YES. Create the Audit Policy "DP_POL"
create audit policy DP_POL actions component=datapump all;
Audit policy created.. Enable the Audit policy "DP_POL"
audit policy DP_POL;
Audit succeeded.. List the current Audit policies
select * from AUDIT_UNIFIED_ENABLED_POLICIES  where POLICY_NAME like '%DP%';POLICY_NAME          ENABLED_OPTION  ENTITY_NAME          ENTITY_ SUC FAI
-------------------- --------------- -------------------- ------- --- ---
ORA_DV_AUDPOL2       BY USER         ALL USERS            USER    YES YES
ORA_DV_AUDPOL        BY USER         ALL USERS            USER    YES YES
DP_POL               BY USER         ALL USERS            USER    YES YES

Task 4: Audit Data Pump Usage

在本实验中,您将配置统一审计跟踪并查看 Oracle 数据泵导出的审计。 这是传统审计中没有的统一审计的一个功能。

创建Data Pump审计策略:

./ua_audit_datapump_export.sh

执行Data Pump操作:

./ua_datapump_export_hr_table.sh

实际为两个expdp操作,使用system用户的成功,使用dbsat_admin的失败,因为没有权限。

查看审计记录:

./ua_review_datapump_audit_events.sh

输出为:

...
. View the Unified Audit generated by Data PumpAUDIT_TYPE           DBUSERNAME           CLIENT_PROGRAM_NAME      EVENT_TIMESTAMP                    ACTION_NAME     RETURN_CODE
-------------------- -------------------- ------------------------ ---------------------------------- --------------- -----------
Datapump             SYSTEM               oracle@dbsec-lab (DW00)  05-APR-22 05.47.34.372117 AM       EXPORT                    0

删除审计策略:

./ua_delete_dp_audit_policy.sh

Appendix: About the Product

在统一审计中,统一审计跟踪从各种来源捕获的审计信息。

统一审计使您能够从以下来源捕获审计记录:

  • 来自统一审计策略和审计设置的审计记录(包括 SYS 审计记录)
  • DBMS_FGA PL/SQL 包中的细粒度审计记录
  • Oracle Database Real Application Security 审计记录
  • Oracle Recovery Manager 审计记录
  • Oracle Database Vault 审计记录
  • Oracle 标签安全审计记录
  • Oracle 数据挖掘记录
  • Oracle 数据泵
  • Oracle SQL*Loader 直接加载

统一审计跟踪驻留在 SYSAUX 表空间的 AUDSYS 模式中的只读表中,使该信息在 UNIFIED_AUDIT_TRAIL 数据字典视图中以统一格式提供,并且在单实例和 RAC环境中都可用。除了用户 SYS,被授予 AUDIT_ADMIN 和 AUDIT_VIEWER 角色的用户可以查询这些视图。 如果您的用户只需要查询视图而不需要创建审计策略,则授予他们 AUDIT_VIEWER 角色。

当数据库可写时,审计记录被写入统一审计线索。 如果数据库不可写,则将审计记录写入 O R A C L E B A S E / a u d i t / ORACLE_BASE/audit/ ORACLEBASE/audit/ORACLE_SID 目录中的新格式操作系统文件。

统一审计跟踪的好处
启用统一审计后,它不再依赖于以前版本中使用的初始化参数。
Oracle 数据库安装的所有审计组件的审计记录(包括来自 SYS 审计跟踪的记录)都以一种格式放置在一个位置,而您不必在不同的地方查找不同格式的审计跟踪。

通过将其置于单一审计跟踪中,审计跟踪的管理和安全性也得到了改进。
整体审计性能大大提高。 默认情况下,审计记录会自动写入 AUDSYS 模式中的内部关系表。
您可以创建命名审核策略,使您能够审核本节开头列出的受支持组件以及 SYS 管理用户。 此外,您可以在您的政策中建立条件和排除。
如果您使用的是 Oracle Audit Vault and Database Firewall 环境,那么统一的审计跟踪极大地方便了审计数据的收集,因为所有这些数据都来自一个位置。

Want to Learn More?

  • Introduction to Auditing
  • Monitoring Database Activity with Auditing

Acknowledgements

本实验的作者为Hakim Loumi,数据库安全的PM。贡献者为Angeline Dhanarani, Rene Fontcha。

这篇关于Oracle LiveLabs实验:DB Security - Unified Auditing的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677466

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置