From: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
To: Casey Schaufler <casey@schaufler-ca.com>,
Serge Hallyn <serge@hallyn.com>, Paul Moore <paul@paul-moore.com>,
Stephen Smalley <stephen.smalley.work@gmail.com>,
Eric Paris <eparis@parisplace.org>,
Frederick Lawler <fred@cloudflare.com>,
Jens Axboe <axboe@kernel.dk>,
Joseph Qi <joseph.qi@linux.alibaba.com>,
linux-security-module@vger.kernel.org, selinux@vger.kernel.org,
linux-block@vger.kernel.org, linux-kernel@vger.kernel.org,
louxiao.lx@alibaba-inc.com
Subject: Re: [PATCH 0/2] capability: Introduce CAP_BLOCK_ADMIN
Date: Tue, 16 May 2023 20:05:21 +0800 [thread overview]
Message-ID: <e1242268-e7b6-d77c-a94f-edd913845ca7@linux.alibaba.com> (raw)
In-Reply-To: <b645e195-7875-9fc3-a8de-6676dfe800b8@schaufler-ca.com>
Hi Casey,
On 5/12/23 12:17 AM, Casey Schaufler wrote:
> On 5/11/2023 12:05 AM, Tianjia Zhang wrote:
>> Separated fine-grained capability CAP_BLOCK_ADMIN from CAP_SYS_ADMIN.
>> For backward compatibility, the CAP_BLOCK_ADMIN capability is included
>> within CAP_SYS_ADMIN.
>>
>> Some database products rely on shared storage to complete the
>> write-once-read-multiple and write-multiple-read-multiple functions.
>> When HA occurs, they rely on the PR (Persistent Reservations) protocol
>> provided by the storage layer to manage block device permissions to
>> ensure data correctness.
>>
>> CAP_SYS_ADMIN is required in the PR protocol implementation of existing
>> block devices in the Linux kernel, which has too many sensitive
>> permissions, which may lead to risks such as container escape. The
>> kernel needs to provide more fine-grained permission management like
>> CAP_NET_ADMIN to avoid online products directly relying on root to run.
>>
>> CAP_BLOCK_ADMIN can also provide support for other block device
>> operations that require CAP_SYS_ADMIN capabilities in the future,
>> ensuring that applications run with least privilege.
>
> Can you demonstrate that there are cases where a program that needs
> CAP_BLOCK_ADMIN does not also require CAP_SYS_ADMIN for other operations?
> How much of what's allowed by CAP_SYS_ADMIN would be allowed by
> CAP_BLOCK_ADMIN? If use of a new capability is rare it's difficult to
> justify.
>
For the previous non-container scenarios, the block device is a shared
device, because the business-system generally operates the file system
on the block. Therefore, directly operating the block device has a high
probability of affecting other processes on the same host, and it is a
reasonable requirement to need the CAP_SYS_ADMIN capability.
But for a database running in a container scenario, especially a
container scenario on the cloud, it is likely that a container
exclusively occupies a block device. That is to say, for a container,
its access to the block device will not affect other process, there is
no need to obtain a higher CAP_SYS_ADMIN capability.
For a file system similar to distributed write-once-read-many, it is
necessary to ensure the correctness of recovery, then when recovery
occurs, it is necessary to ensure that no inflighting-io is completed
after recovery.
This can be guaranteed by performing operations such as SCSI/NVME
Persistent Reservations on block devices on the distributed file system.
Therefore, at present, it is only necessary to have the relevant
permission support of the control command of such container-exclusive
block devices.
Kind regards,
Tianjia
next prev parent reply other threads:[~2023-05-16 12:05 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-11 7:05 [PATCH 0/2] capability: Introduce CAP_BLOCK_ADMIN Tianjia Zhang
2023-05-11 7:05 ` [PATCH 1/2] " Tianjia Zhang
2023-05-11 7:05 ` [PATCH 2/2] block: use block_admin_capable() for Persistent Reservations Tianjia Zhang
2023-05-11 16:17 ` [PATCH 0/2] capability: Introduce CAP_BLOCK_ADMIN Casey Schaufler
2023-05-16 12:05 ` Tianjia Zhang [this message]
2023-05-18 0:01 ` Casey Schaufler
2023-05-22 2:53 ` Tianjia Zhang
2023-05-22 19:13 ` Casey Schaufler
2023-05-23 3:05 ` Tianjia Zhang
2023-05-23 6:18 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e1242268-e7b6-d77c-a94f-edd913845ca7@linux.alibaba.com \
--to=tianjia.zhang@linux.alibaba.com \
--cc=axboe@kernel.dk \
--cc=casey@schaufler-ca.com \
--cc=eparis@parisplace.org \
--cc=fred@cloudflare.com \
--cc=joseph.qi@linux.alibaba.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=louxiao.lx@alibaba-inc.com \
--cc=paul@paul-moore.com \
--cc=selinux@vger.kernel.org \
--cc=serge@hallyn.com \
--cc=stephen.smalley.work@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).