FGA简介

FGA:细粒度访问控制:使用不同的用户名登录在查询相同表时返回不同的数据。
FGA的设置分为下面五个步骤:
一、 建立上下文:
二、设置上下文属性:
三、建立登录触发器:
四、建立策略函数
五、增加策略
二、 建立上下文:
SQL> conn / as sysdba
已连接。
SQL> create context empenv using scott.ctx;
上下文已创建。

二、设置上下文属性:
SQL> create package scott.ctx as procedure set_deptno;
2end;
3/

程序包已创建。

SQL> create package body scott.ctx as procedure set_deptno is
2id number;
3begin
4if sys_context('userenv','session_user')='JONES' then
5dbms_session.set_context('empenv','deptno',20);
6elsif sys_context('userenv','session_user')='BLAKE' then
7dbms_session.set_context('empenv','deptno',30);
8else
9dbms_session.set_context('empenv','deptno',10);
10end if;
11end;
12end;
13/

程序包体已创建。

三、建立登录触发器:
SQL> create trigger login_trig
2after logon on database call scott.ctx.set_deptno
3/

触发器已创建
四、建立策略函数
SQL> create package scott.emp_security as
2function emp_sec(p1 varchar2,p2 varchar2) return varchar2;
3end;
4/

程序包已创建。
1create or replace package body scott.emp_security as
2function emp_sec(p1 varchar2,p2 varchar2) return varchar2 is
3d_predicate varchar2(2000);
4begin
5if user not in('SYS','SYSTEM','SCOTT') then
6d_predicate:='deptno=SYS_CONTEXT(''empenv'',''deptno'')';
7return d_predicate;
8end if;
9return '1=1';
10end;
11* end;
SQL> /

程序包体已创建。

五、增加策略
SQL> exec dbms_rls.add_policy('scott','emp','emp_policy','scott','emp_security.emp_sec','select');
PL/SQL 过程已成功完成。

到些FGA的设置已经完成了。
现在来体验一下FGA吧:
SQL> conn scott/tiger
已连接。
SQL> select ename,deptno from emp;

ENAME DEPTNO
---------- ----------
SMITH 20
ALLEN 30
WARD 30
JONES 20
MARTIN 30
BLAKE 30
CLARK 10
SCOTT 20
KING 10
TURNER 30
ADAMS 20

ENAME DEPTNO
---------- ----------
JAMES 30
FORD 20
MILLER 10

已选择14行。
SQL> conn jones/jones
已连接。
SQL> select ename,deptno from emp;
select ename,deptno from emp
*
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> select ename,deptno from scott.emp;

ENAME DEPTNO
---------- ----------
SMITH 20
JONES 20
SCOTT 20
ADAMS 20
FORD 20
SQL> conn blake/blake
已连接。
SQL> select ename,deptno from scott.emp;

ENAME DEPTNO
---------- ----------
ALLEN 30
WARD 30
MARTIN 30
BLAKE 30
TURNER 30
JAMES 30

已选择6行。

========================
FGA:细粒度审计
建立策略函数:
SQL> exec dbms_fga.add_policy(object_schema=>'scott',-
> object_name=>'emp',policy_name=>'chk_emp',-
>audit_condition=>'deptno=20',audit_column=>'sal',-
>statement_types=>'update,select')

PL/SQL 过程已成功完成。
策略函数已经建立完毕。、
可以通过这个查询来查看策略函数是否建立完成。
select t.object_schema,t.object_name,t.policy_name,t.enabled from dba_audit_policies t;

开始体验FGA了:
执行下列语句:
SQL> conn scott/tiger
已连接。
SQL> update emp set sal=sal+.1 ;

已更新14行。

SQL> commit;

提交完成。
查看审计结果:
select * from dba_fga_audit_trail;
1 120 2006-10-13 15:13:13 SCOTT 0914-32/Administrator EPORT0/0914-32 0914-32/Administrator SCOTT EMP CHK_EMP 363592 update emp set sal=sal+.1 UPDATE 13-10月-06 03.13.13.147000 下午 +08:00 0 308:1016 0400040047000000 8 1
======================
08-05
Fate/Grand Automata(FGA)是一款为《命运/冠位指定》(Fate/Grand Order)游戏设计的自动化工具,适用于Android设备,支持无需Root权限的自动战斗与资源刷取功能。以下是关于FGA下载和使用的关键信息。 ### 下载与安装 FGA是开源项目,官方下载地址为 [GitCode](https://gitcode.com/gh_mirrors/fg/FGA)。在该页面中,点击“Releases”部分,选择适合Android设备的APK文件进行下载。由于FGA不通过Google Play商店分发,因此需要启用设备的“未知来源”安装权限,具体路径为“设置” > “安全” > “允许从未知来源安装应用” [^4]。 安装完成后,打开FGA应用,并立即配置无障碍服务。进入“设置” > “无障碍” > “已安装的服务”,找到FGA并开启它。确保服务状态显示为“开启”,而不是“未工作” [^2]。 ### 常见问题与解决方案 1. **无障碍服务无法启用** 如果FGA的无障碍服务状态显示为“未工作”,建议重启设备。有时系统临时问题可能导致服务无法启动,重启后通常可以解决 [^1]。 2. **支持列表滚动导致崩溃** 部分用户在滚动浏览支持列表时可能会遇到应用程序崩溃的问题,系统提示“无障碍服务:已禁用”。此问题主要出现在运行Android 14的设备上,尤其是三星Galaxy系列设备(如Tab S8 Ultra和S23 Ultra)。开发团队已在版本2980中修复了此问题,建议升级到最新版本以获得优化后的无障碍服务稳定性 [^2]。 3. **服务崩溃后如何恢复** 如果遇到服务崩溃,进入系统设置关闭FGA的无障碍服务,重新启用该服务并重启应用。同时,查看FGA应用的日志输出,以获取更多错误信息,便于在GitHub Issues页面寻求进一步帮助 [^1]。 4. **兼容性问题** FGA需要与游戏版本保持同步更新。定期检查项目地址的“Releases”部分,确保下载最新版本以避免兼容性错误 [^4]。 ### 使用建议 - **自动化效率优化** FGA适合自动化日常任务和活动关卡刷取。配置战斗脚本时,参考项目文档优化设置,例如调整战斗延迟和技能触发顺序,以提高效率 [^1]。 - **安全性注意事项** FGA是开源工具,但使用时需遵守游戏规则。过度自动化可能违反服务条款,建议仅用于个人便利 [^4]。 ### 相关代码示例 以下是一个简单的无障碍服务启用代码示例,用于Android设备的无障碍服务配置: ```java // 在AndroidManifest.xml中声明无障碍服务 <service android:name=".FGAAccessibilityService" android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> <intent-filter> <action android:name="android.accessibilityservice.AccessibilityService" /> </intent-filter> <meta-data android:name="android.accessibilityservice" android:resource="@xml/accessibility_service_config" /> </service> ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值