AD Group Type and Permissions Setting in Cognos

本文介绍如何在Cognos中利用Active Directory (AD) 用户组进行权限管理。通过将用户组作为角色来分配报表访问权限,可以简化权限维护流程,特别是在员工离职、入职或调动部门时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在与AD账号集成以后,Cognos不仅可以使用用户的个人AD账号来设置权限,也可以使用AD的用户组来设置。


使用AD用户组有什么好处?

把用户组当做一类角色,把报表访问权限开放给一类角色而不是个人。

一旦有人离职、入职、部门调动,只要AD用户组的成员变动了,访问权限自然而然地也就更改了。不用额外地修改cognos报表的访问权限。


AD用户组的类型
在使用AD用户组之前,需要确认该组必须是安全组(security group)而不是通讯组(distribution group)。后者是无法指派对资源的权限的。

(图为AD用户组属性页)



“通讯组不启用安全,这意味着它们不能列在随机访问控制列表 (DACL) 中。如果需要组来控制对共享资源的访问,则创建安全组。”


<think>我们正在处理一个关于Android系统权限的问题。用户遇到了“特权权限未在允许列表中”的错误,这通常与系统应用或特权应用的权限声明有关。在Android中,特权权限(privileged permissions)是那些需要应用被放置在系统的特权文件夹(如/system/priv-app)中才能获得的权限。从Android 8.0(API级别26)开始,系统要求特权权限必须在白名单中(即必须在系统的`privapp-permissions.xml`文件中被明确允许),否则应用将无法获得这些权限。 解决此问题的步骤通常包括: 1. 确认应用被正确安装在特权位置(/system/priv-app)。 2. 为应用创建一个privapp-permissions.xml文件,并在其中声明应用所需的所有特权权限。 3. 确保该XML文件被放置在正确的目录中(例如,对于设备厂商,通常是/system/etc/permissions/;对于特定应用,也可以是/system/etc/permissions/下的子目录,但更常见的是直接放在/system/etc/permissions/,并且文件名与应用的包名相关,或者使用通用的文件名,然后在文件中指定包名)。 4. 重新构建系统镜像并刷机,或者通过adb remount并推送到设备(如果设备可写)。 下面是一个privapp-permissions.xml文件的示例: ```xml <?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.example.myapp"> <permission name="android.permission.MY_PRIVILEGED_PERMISSION"/> <!-- 添加其他权限 --> </privapp-permissions> </permissions> ``` 注意:必须将`com.example.myapp`替换为你的应用包名,并在`<permission>`标签中列出所有需要的特权权限。 如果应用需要多个权限,可以添加多个`<permission>`标签。 另外,在Android 9(API级别28)及更高版本中,系统提供了一个工具来帮助生成这个文件:`privapp_permissions.py`(在AOSP的`frameworks/base/tools/privapp-permissions`目录下)。你可以使用这个工具为你的应用生成初始的privapp-permissions.xml文件。 步骤: 1. 将你的APK放在一个目录中(例如,/path/to/your/app.apk)。 2. 运行命令: ```bash python privapp_permissions.py --apk /path/to/your/app.apk ``` 3. 该命令会输出XML内容,你可以将其保存到合适的文件中。 但是,请注意,生成的XML可能不包含动态请求的权限(在运行时请求的权限),所以可能需要手动添加。 如果用户是在开发系统应用,那么他们需要将这些步骤集成到他们的构建系统中(例如,在AOSP中,将XML文件放在设备特定的目录中,并在makefile中指定)。 此外,如果用户是在已经root的设备上测试,他们可以尝试手动将XML文件推送到设备上的/system/etc/permissions/目录,并设置正确的权限(644,即rw-r--r--),然后重启设备。 但是,请注意,修改系统分区需要解锁bootloader和root权限,并且可能使设备保修失效。 如果用户不是系统开发者,而是普通应用开发者,那么他们不应该使用特权权限,因为特权权限只供系统应用使用。 因此,我们首先需要确认用户的应用类型:是否为系统应用?如果是,那么按照上述步骤操作;如果不是,那么用户可能错误地使用了特权权限,需要重新考虑权限设计。 基于以上分析,我们可以这样回答用户的问题,并提供解决方案。</think>### Android 特权权限未在白名单中的错误分析 当系统提示 **"Signature privileged permissions not in allowlist"** 错误时,表示您的应用尝试声明特权级权限,但未在系统的特权权限白名单中注册。这是 Android 8.0(API 26)引入的安全机制,主要影响系统级应用和预装应用。 #### 错误原因 1. **特权权限未声明**:应用在 `AndroidManifest.xml` 中声明了特权权限(如 `android.permission.INSTALL_PACKAGES`),但未在 `privapp-permissions.xml` 白名单中注册 2. **XML 文件位置错误**:白名单文件未放置在正确的系统目录 3. **签名不匹配**:应用签名与系统预期的平台签名不一致 4. **权限名称错误**:白名单中声明的权限名称与代码中请求的权限不匹配 #### 解决方案 ##### 1. 创建特权权限白名单文件 在项目目录创建 `etc/privapp-permissions-[包名].xml`: ```xml <?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.your.package"> <!-- 声明所需特权权限 --> <permission name="android.permission.INSTALL_PACKAGES"/> <permission name="android.permission.DELETE_PACKAGES"/> </privapp-permissions> </permissions> ``` ##### 2. 修改 Android.mk 文件 确保将白名单文件打包到系统镜像: ```makefile LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := privapp-permissions-your-app.xml LOCAL_MODULE_CLASS := ETC LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions LOCAL_SRC_FILES := $(LOCAL_MODULE) include $(BUILD_PREBUILT) ``` ##### 3. 验证应用签名 确保应用使用平台签名证书签名: ```bash # 检查签名 keytool -printcert -jarfile your_app.apk ``` ##### 4. 正确安装位置 特权应用必须安装在系统分区: ```bash /system/priv-app/YourApp/ # 正确位置 /system/app/YourApp/ # 错误!非特权目录 ``` #### 调试建议 1. 检查系统日志: ```bash adb logcat | grep -i "privapp-permissions" ``` 2. 验证白名单文件部署: ```bash adb shell ls /system/etc/permissions/privapp-permissions-*.xml ``` 3. 使用权限检查工具: ```bash adb shell dumpsys package your.package.name | grep -A 30 "Privileged" ``` #### 技术原理 Android 通过 `PackageManagerService` 在启动时加载 `/system/etc/permissions/` 下的所有 XML 白名单文件[^1]。特权权限必须满足: $$ \text{PrivPermission} \in \text{AllowList} \land \text{SignatureMatch} \land \text{InPrivDir} $$ 否则会抛出 `SecurityException`。该机制防止未授权应用滥用系统权限[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值