天道酬勤,学无止境

ACL

数据库级 ACL 过滤(db level ACL filtering)

问题 我正在为此查看 Spring-security 3.0,spring 的 ACL 过滤发生在 post(api call) 操作中。 有两个问题:- 它会破坏分页查询即使我在 api 获取结果之上的层上进行分页(我在这里使用 spring-hibernate),每次 db 查询都是浪费的,因为它获取并填充所有结果,即使它们中的大多数注定会在 java 中被过滤掉等级 我见过解决方案,其中每个查询都附加有在 db 级别进行过滤的 acl 查询,但这看起来很难看,因为它会污染具有授权问题的业务逻辑,是否有任何方法/框架可以透明地进行 db 级别的 acl 过滤? 我喜欢 spring-securities 通过配置/注释以声明方式强制执行安全性的整体方法,从而直接从安全相关逻辑中节省代码,但我认为它在性能问题上失去了这一点 回答1 对于你提到的问题,对我来说只有 #1 才是真正的问题。 对于#2 问题,如果我理解正确的话,它是返回没有任何分页行为的结果列表的查询。 因此,应该假设结果的大小是有限的,并且不会增长到返回结果会变得非常缓慢的程度。 否则,您需要将此查询设为可分页并返回到 #1 问题。 鉴于有限的结果列表,我怀疑使用@PostFilter在应用程序级别进行@PostFilter会明显比在数据库级别进行过滤要慢。 我见过解决方案,其中每个查询都附加有在 db

2021-12-08 18:42:31    分类:技术分享    spring-security   ACL

简单数据库系统中的隐私(Privacy in simple DB system)

问题 我正在实现一个简单的数据库系统。 基本上是一个简单的社交网络,每个人都有自己的仪表板,您可以在其中发布一些随机文本。 问题是我想要一个隐私级别,我的意思是我希望某人只能浏览一些个人资料。 我正在决定谁能看什么。 问题是:我该怎么做?我必须在数据库中使用关系还是什么? 谢谢你的时间。 S。 回答1 您正在寻找的称为“访问控制列表”(ACL):查看有关实施 ACL 的 Nettuts 教程:http://net.tutsplus.com/tutorials/php/a-better-login-system/ 回答2 创建一个辅助表,您可以在其中保留谁可以访问什么。 如果在主用户表中你有 id 或其他东西(最好是索引)(就像你应该的那样)。 只需制作一个带有 id 和 view_id 或其他东西的 2 列表(外键和 togeder 都应该形成一个 pk)。 而且……你读了它。 回答3 很可能您想为您的隐私设置一张桌子,例如 id type 1 View All 2 View None 3 View Something 然后在您可以找到用户的桌子上,您可以调用该类型 user_id privacy_id 1 2 2 3 4 1 其中privacy_id 是您的隐私表的ID,类似这样。

2021-12-08 12:00:09    分类:技术分享    php   mysql   database   ACL   privacy

CakePHP:设置 ACL 允许/拒绝不起作用(表未更新)?(CakePHP: Setting up ACL allow/deny not working (tables not being updated)?)

问题 我正在尝试在我的 UsersController 中使用以下操作设置我的 ACL: class UsersController extends AppController { var $name = 'Users'; var $helpers = array('Html', 'Form'); function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('*'); } function install() { $group =& $this->User->Group; //Allow admins to everything $group->id = 1; $this->Acl->allow($group, 'controllers'); //allow users $group->id = 2; $this->Acl->deny($group, 'controllers'); $this->Acl->allow($group, 'controllers/Messages'); $this->Acl->allow($group, 'controllers/MessageLists'); $this->Acl->allow($group, 'controllers/Products'); $this-

2021-12-08 09:28:53    分类:技术分享    mysql   cakephp   ACL   cakephp-1.2

从命令行设置证书的读取权限(Set read permission for certificate from command line)

问题 任何人都可以指出我从命令行管理证书读取权限的正确方向吗? 我正在编写我们的证书安装脚本,并且需要允许 NetworkService 访问“本地计算机\个人\证书”存储中的 2 个证书。 提前致谢 回答1 我这样做是为了授予我们的 Web 应用程序访问安装在 Windows 中的证书的私钥的权限。 这是一个powershell脚本。 它依赖于 Microsoft 的 FindPrivateKey.exe。 # Use FindPrivateKey.exe (From Windows SDK) to get the file name of the private key. $s = cmd /c "FindPrivateKey.exe My LocalMachine -t `"9D1F685D554E5B04C591D7967FB0D151153A25D8`" -a" # Grant read access on the private key cmd /c "cacls.exe `"$s`" /E /G `"IIS_IUSRS`":R"

2021-12-07 11:20:29    分类:技术分享    windows   certificate   file-permissions   ACL

为什么我不能在 C# 中设置这个 ACL 规则?(Why can I not set this ACL rule in C#?)

问题 在 Vista SP1 上以提升的管理员身份运行,我的 C# 应用程序尝试使用以下代码设置以下规则。 不会产生错误,但目录的 ACL 也不会发生任何更改。 我错过了什么? public static void Main( string args[] ) { string dirPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Company"), "Product" ); Directory.Create(dirPath); _SetAcl(dirPath, "Users", FileSystemRights.FullControl); } private static void _SetAcl(string path, string identity, FileSystemRights rights) { var info = new DirectoryInfo(path); var acl = info.GetAccessControl(); var rule1 = new FileSystemAccessRule(identity, rights, AccessControlType.Allow); bool modified

2021-12-03 10:29:17    分类:技术分享    c#   .net   security   ACL   rights

使用 gitolite 拒绝读取特定存储库分支(Deny READ of specific repository branches with gitolite)

问题 我想要实现的是:同事在@coworkers 组中,客户在@clients 组中。 Git repo 应该可供所有人读写,但应该有特殊的分支。 即我创建了一个新的分支“实习生”,@coworkers 应该有 RW+ 访问权限,但客户不应该能够 R 或 W。 我以为我可以通过 repo myrepo - intern = @clients RW+ = @clients @coworkers 但这不起作用。 回答1 根据与gitolite作者的讨论,分支无法进行读取访问限制: Gitolite 的每个分支的东西仅适用于写访问。 它不适用于读取访问,因为 git 本身不支持进行这种区分。 回答2 现在可以使用 gitolite 的部分复制功能使用最新版本的 gitolite v3.x 限制对 gitolite 分支的读取访问 一定要使用最新的gitolite版本取消注释 ~/.gitolite.rc 文件的ENABLE部分中的partial-copy行在 ~/.gitolite.rc 文件中设置$GIT_CONFIG_KEYS = '.*' 使用部分复制选项来拥有另一个存储库,它是原始存储库的副本,但没有一些分支。 示例:如果您希望客户端只能访问deploy分支 repo my-repo RW+ = @coworkers repo my-repo-deploy RW deploy =

2021-12-02 07:43:06    分类:技术分享    git   ACL   gitolite

卡夫卡 TOPIC_AUTHORIZATION_FAILED(Kafka TOPIC_AUTHORIZATION_FAILED)

问题 我实际上正在使用 SASL 纯文本设置简单的 Kafka 身份验证并添加 ACL 授权。 但是当我尝试使用数据时遇到问题。 [main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version : 0.10.0.0 [main] INFO org.apache.kafka.common.utils.AppInfoParser - Kafka commitId : b8642491e78c5a13 [main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 1 : {test-topic=TOPIC_AUTHORIZATION_FAILED} [main] WARN org.apache.kafka.clients.NetworkClient - Error while fetching metadata with correlation id 2 : {test-topic=TOPIC_AUTHORIZATION_FAILED} [main] WARN org.apache.kafka.clients.NetworkClient - Error while

2021-11-30 22:16:34    分类:技术分享    apache-kafka   ACL   jaas

检索安全描述符并获取 FileSystemRights 的编号(Retrieving security descriptor and getting number for FileSystemRights)

问题 使用Get-Acl我试图获得对文件夹的访问权限。 问题是,对于某些组,我得到的是数字而不是访问类型。 下面的例子: get-acl "C:\TestFolder" | % {$_.access} FileSystemRights : -536805376 AccessControlType : Allow IdentityReference : TestDomain\Support IsInherited : False InheritanceFlags : ObjectInherit PropagationFlags : InheritOnly 有什么办法可以把这个数字翻译回它的名字吗? 回答1 FileSystemRights属性的值是一个无符号的 32 位整数,其中每一位代表一个特定的访问权限。 除了“通用”权限(第 28-31 位)和访问 SACL 的权限(第 23 位)之外,大多数权限都列在 Win32_ACE 类文档中。 可以在此处和此处找到更多详细信息。 如果您想将 ACE 访问掩码分解为其特定的访问权限(vulgo“扩展权限”),您可以执行以下操作: $accessMask = [ordered]@{ [uint32]'0x80000000' = 'GenericRead' [uint32]'0x40000000' = 'GenericWrite'

2021-11-29 01:52:56    分类:技术分享    powershell   ACL

The SECURITY_ATTRIBUTES struct and CreateNamedPipe()

My scenario is the following: the process that creates the named pipe object with CreateNamedPipe() has administrator privileges, but the client process "connecting" to it with CreateFile() does not. Passing a NULL as the last argument to CreateNamedPipe() appears to default to admin-only access rights. As a hack, I've tried do a server-side ImpersonateLoggedOnUser()/RevertToSelf() method for the duration of the pipe related code, but it fails. Seems to me like the best thing to do here is to actually set a proper SECURITY_ATTRIBUTES struct to the last parameter of CreateNamedPipe(), but I'm

2021-11-29 01:28:53    分类:问答    c++   winapi   ACL

Laravel Cartalyst Sentinel - 向用户表添加用户名列(正确的方法是什么)(Laravel Cartalyst Sentinel - Adding a username column to users table (What is the right way))

问题 我已经引入了 cartalyst/sentinel 并且我已经运行了生成表所需的迁移 php artisan migrate --package=cartalyst/sentinel 我注意到这些是用户表中可用的列 ID 电子邮件密码权限上次登录名姓 created_at 更新时间 我想在电子邮件后添加用户名。 所以我创建了一个迁移文件来做到这一点。 //add a column username after email in the users table $table->string('username')->after('email')->unique(); 现在当我使用 Sentinel::register $credentials = Input::all(); $user = Sentinel::register($credentials); 用户名不会保存在表中。 所以我设法通过编辑vendor/cartalyst/sentinel/src/Users/EloquentUser.php来填充它 protected $fillable = [ 'email', 'username', /* i added this */ 'password', 'last_name', 'first_name', 'permissions', ]; 现在这有效,用户名被存储在表中

2021-11-28 17:17:21    分类:技术分享    php   laravel   ACL   cartalyst-sentinel