All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paul Moore <paul@paul-moore.com>
To: Dan Jurgens <danielj@mellanox.com>, Stephen Smalley <sds@tycho.nsa.gov>
Cc: chrisw@sous-sol.org, Eric Paris <eparis@parisplace.org>,
	dledford@redhat.com, sean.hefty@intel.com,
	hal.rosenstock@gmail.com, selinux@tycho.nsa.gov,
	linux-security-module@vger.kernel.org,
	linux-rdma@vger.kernel.org, yevgenyp@mellanox.com
Subject: Re: [PATCH 00/12] SELinux support for Infiniband RDMA
Date: Wed, 29 Jun 2016 13:33:44 -0400	[thread overview]
Message-ID: <CAHC9VhRKFmZ+thwqbq8JnGbj04+Uex4JM0CS=umjfUQB90k0VQ@mail.gmail.com> (raw)
In-Reply-To: <1466711578-64398-1-git-send-email-danielj@mellanox.com>

On Thu, Jun 23, 2016 at 3:52 PM, Dan Jurgens <danielj@mellanox.com> wrote:
> From: Daniel Jurgens <danielj@mellanox.com>
>
> This patch series was submitted previously as an RFC.  The 3rd version was
> posted on 19 Apr 2016 with the subject "[RFC PATCH v3 NN/MM] SELinux support
> for Infiniband RDMA".

Hi Dan,

Thanks for sticking with this patchset, I'm working through it right
now and I have a question on the overall design (below).

> Because RDMA allows for kernel bypass all enforcement must be done during
> connection setup.  To communicate over RDMA requires a send and receive queue
> called a queue pair (QP).  During the creation of a QP it is initialized
> before it can be used to send or receive data.  During initialization the user
> must provide the PKey and port the QP will use, at this time access can be
> enforced.
>
> Because there is a possibility that the enforcement settings or security
> policy can change, a means of notifying the ib_core module of such changes is
> required.  To facilitate this two LSM hooks are provided, ib_core will
> register and unregister a callback function at init and cleanup respectively.
> SELinux will call the callback as appropriate if it has been registered.
> When the callback is called ib_core will recheck the PKey access for all
> existing QPs.

...

> In order to properly enforce security when changes to the PKey table or
> security policy or enforcement occur ib_core must track which QPs are using
> each port, pkey index, and alternate path for every IB device.  This makes
> operations that used to be atomic transactional.
>
> When modifying a QP ib_core must associate it with the PKey index, port,
> and alternate path specified.  If the QP was already associated with different
> settings the QP is added to the new list prior to the modify attempt.  If
> the modify succeeds then the old listing is removed.  If the modify fails
> the new listing is removed and the old listing remains unchanged.
>
> When destroying a QP the ib_qp structure is freed by the hardware driver
> if the destroy is successful.  This requires storing security related
> information in a separate structure. When a destroy request is in process
> the ib_qp structure is in an undefined state so if there are changes to the
> security policy or PKey table the security checks cannot reset the QP if it
> doesn't have permission for the new setting.  If the destroy fails security
> for that QP must be enforced again, and its status in the list restored.
> If the destroy succeeds the security info can be cleaned up and freed.

Perhaps I'll end up answering this for myself as I work my way through
the patches, but hopefully you are handling the case where a destroy
operation fails and the QP needs to be revalidated?

I'm also wondering if QP revalidation on a security policy change is
worth the trouble; we've historically not been able to provide any
revoke guarantees so I'm not sure if it is worth a lot of added
complexity to gain this functionality just for Infiniband.  That said,
it would be *nice* to have revalidation/revocation working, even if
only for IB.  It may be that we need similar code to handle the
various corner cases, so we may be stuck with the complexity anyway, I
just thought it was worth bringing up as a topic of discussion.

-- 
paul moore
www.paul-moore.com

  parent reply	other threads:[~2016-06-29 17:33 UTC|newest]

Thread overview: 128+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-23 19:52 [PATCH 00/12] SELinux support for Infiniband RDMA Dan Jurgens
2016-06-23 19:52 ` Dan Jurgens
2016-06-23 19:52 ` [PATCH 01/12] security: Add LSM hooks for Infiniband security Dan Jurgens
     [not found]   ` <1466711578-64398-2-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-30 14:57     ` Yuval Shaia
2016-06-30 14:57       ` Yuval Shaia
2016-06-30 20:27     ` Paul Moore
2016-06-30 20:27       ` Paul Moore
2016-06-30 21:09       ` Daniel Jurgens
2016-06-30 21:09         ` Daniel Jurgens
2016-06-30 21:27         ` Paul Moore
2016-06-30 21:34           ` Daniel Jurgens
2016-06-30 21:34             ` Daniel Jurgens
2016-06-30 20:33     ` Paul Moore
2016-06-30 20:33       ` Paul Moore
2016-06-30 21:27       ` Daniel Jurgens
2016-06-30 21:27         ` Daniel Jurgens
     [not found]         ` <AM4PR0501MB2257674DEA1F81F53A35AC21C4240-dp/nxUn679hpbkYrVjfdjcDSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-06-30 21:30           ` Paul Moore
2016-06-30 21:30             ` Paul Moore
2016-06-23 19:52 ` [PATCH 02/12] selinux: Create policydb version for Infiniband support Dan Jurgens
     [not found]   ` <1466711578-64398-3-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-30 15:01     ` Yuval Shaia
2016-06-30 15:01       ` Yuval Shaia
     [not found]       ` <20160630150140.GB22107-Hxa29pjIrETlQW142y8m19+IiqhCXseY@public.gmane.org>
2016-07-01 12:50         ` Leon Romanovsky
2016-07-01 12:50           ` Leon Romanovsky
2016-07-01 13:49           ` Daniel Jurgens
2016-07-01 13:49             ` Daniel Jurgens
     [not found]             ` <DB6PR0501MB2261C7D467873122250A1F3EC4250-wTfl6qNNZ1NK98U9gK7MJ8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-07-01 20:48               ` Leon Romanovsky
2016-07-01 20:48                 ` Leon Romanovsky
2016-06-30 20:17     ` Paul Moore
2016-06-30 20:17       ` Paul Moore
2016-06-30 20:59       ` Daniel Jurgens
2016-06-30 20:59         ` Daniel Jurgens
     [not found]         ` <AM4PR0501MB22579221434714783B0AFC68C4240-dp/nxUn679hpbkYrVjfdjcDSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-06-30 21:18           ` Paul Moore
2016-06-30 21:18             ` Paul Moore
2016-06-30 21:32             ` Daniel Jurgens
2016-06-30 21:32               ` Daniel Jurgens
     [not found]               ` <AM4PR0501MB2257CB8E6F84835315734487C4240-dp/nxUn679hpbkYrVjfdjcDSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-06-30 21:37                 ` Paul Moore
2016-06-30 21:37                   ` Paul Moore
2016-06-23 19:52 ` [PATCH 10/12] IB/core: Enforce PKey security on management datagrams Dan Jurgens
     [not found] ` <1466711578-64398-1-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-23 19:52   ` [PATCH 03/12] selinux: Implement Infiniband flush callback Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
     [not found]     ` <1466711578-64398-4-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-30 15:10       ` Yuval Shaia
2016-06-30 15:10         ` Yuval Shaia
2016-06-30 15:44         ` Daniel Jurgens
2016-06-30 15:44           ` Daniel Jurgens
     [not found]           ` <AM4PR0501MB22578AA5FF8B4062F650C581C4240-dp/nxUn679hpbkYrVjfdjcDSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-06-30 19:52             ` Paul Moore
2016-06-30 19:52               ` Paul Moore
     [not found]               ` <CAGH-Kgtn0EFxYc+UOvVQk-0Bco0oOG=STZA+aGYza4TmbNXq3A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-30 20:16                 ` Casey Schaufler
2016-06-30 20:16                   ` Casey Schaufler
     [not found]                   ` <13cf2b8b-1d4e-e61f-80fe-110af2a719cf-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
2016-06-30 20:24                     ` Paul Moore
2016-06-30 20:24                       ` Paul Moore
2016-06-30 20:39               ` Daniel Jurgens
2016-06-30 20:39                 ` Daniel Jurgens
2016-06-23 19:52   ` [PATCH 04/12] selinux: Allocate and free infiniband security hooks Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
     [not found]     ` <1466711578-64398-5-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-30 15:15       ` Yuval Shaia
2016-06-30 15:15         ` Yuval Shaia
2016-06-30 20:42       ` Paul Moore
2016-06-30 20:42         ` Paul Moore
     [not found]         ` <CAGH-KgvtN8T7e5bKq0jJZvSzrGfFwA2VpmPf5gJuqdLZi6odEw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-06-30 21:06           ` Casey Schaufler
2016-06-30 21:06             ` Casey Schaufler
2016-06-30 21:48             ` Daniel Jurgens
2016-06-30 21:48               ` Daniel Jurgens
     [not found]               ` <AM4PR0501MB2257ADAB527392547179F779C4240-dp/nxUn679hpbkYrVjfdjcDSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-07-01 18:54                 ` Paul Moore
2016-07-01 18:54                   ` Paul Moore
2016-07-01 18:59                   ` Daniel Jurgens
2016-07-01 18:59                     ` Daniel Jurgens
2016-07-01 19:17                     ` Paul Moore
2016-07-01 20:13                       ` Casey Schaufler
2016-07-01 20:46                         ` Daniel Jurgens
2016-07-01 20:46                           ` Daniel Jurgens
     [not found]                           ` <DB6PR0501MB226138FF74D031F6BD1C48C6C4250-wTfl6qNNZ1NK98U9gK7MJ8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-07-01 21:16                             ` Casey Schaufler
2016-07-01 21:16                               ` Casey Schaufler
2016-07-01 22:15                           ` Paul Moore
2016-06-23 19:52   ` [PATCH 05/12] selinux: Implement Infiniband PKey "Access" access vector Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
     [not found]     ` <1466711578-64398-6-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-30 15:23       ` Yuval Shaia
2016-06-30 15:23         ` Yuval Shaia
2016-06-30 15:35         ` Daniel Jurgens
2016-06-30 15:35           ` Daniel Jurgens
2016-07-01 16:29       ` Paul Moore
2016-07-01 16:29         ` Paul Moore
2016-07-01 18:21         ` Daniel Jurgens
2016-07-01 18:21           ` Daniel Jurgens
2016-07-01 18:58           ` Paul Moore
2016-07-01 19:16             ` Daniel Jurgens
2016-07-01 19:16               ` Daniel Jurgens
     [not found]               ` <DB6PR0501MB22614C80007D7408544B4B30C4250-wTfl6qNNZ1NK98U9gK7MJ8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-07-01 19:26                 ` Paul Moore
2016-07-01 19:26                   ` Paul Moore
2016-07-01 19:57                   ` Daniel Jurgens
2016-07-01 19:57                     ` Daniel Jurgens
     [not found]                     ` <DB6PR0501MB2261C903AB4CE9644604B9E8C4250-wTfl6qNNZ1NK98U9gK7MJ8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-07-01 20:42                       ` Paul Moore
2016-07-01 20:42                         ` Paul Moore
2016-07-11 14:46     ` Stephen Smalley
2016-07-11 19:03       ` Daniel Jurgens
2016-07-11 19:03         ` Daniel Jurgens
     [not found]       ` <1c637b46-7352-b369-4891-4b695ff80b3b-+05T5uksL2qpZYMLLGbcSA@public.gmane.org>
2016-07-12 20:28         ` Paul Moore
2016-07-12 20:28           ` Paul Moore
2016-06-23 19:52   ` [PATCH 06/12] selinux: Add IB End Port SMP " Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
2016-06-30 15:31     ` Yuval Shaia
     [not found]     ` <1466711578-64398-7-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-07-01 18:48       ` Paul Moore
2016-07-01 18:48         ` Paul Moore
2016-06-23 19:52   ` [PATCH 07/12] selinux: Add a cache for quicker retreival of PKey SIDs Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
     [not found]     ` <1466711578-64398-8-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-23 21:59       ` kbuild test robot
2016-06-23 21:59         ` kbuild test robot
2016-06-30 15:41       ` Yuval Shaia
2016-06-30 15:41         ` Yuval Shaia
2016-07-01 18:51       ` Paul Moore
2016-07-01 18:51         ` Paul Moore
2016-06-23 19:52   ` [PATCH 08/12] IB/core: IB cache enhancements to support Infiniband security Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
     [not found]     ` <1466711578-64398-9-git-send-email-danielj-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-06-30 15:47       ` Yuval Shaia
2016-06-30 15:47         ` Yuval Shaia
2016-06-23 19:52   ` [PATCH 09/12] IB/core: Enforce PKey security on QPs Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
2016-06-23 19:52   ` [PATCH 11/12] IB/core: Enforce Infiniband device SMI security Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
2016-06-23 19:52   ` [PATCH 12/12] IB/core: Implement the Infiniband flush callback Dan Jurgens
2016-06-23 19:52     ` Dan Jurgens
2016-06-30 14:43   ` [PATCH 00/12] SELinux support for Infiniband RDMA Yuval Shaia
2016-06-30 14:43     ` Yuval Shaia
2016-06-30 14:47     ` Daniel Jurgens
2016-06-30 14:47       ` Daniel Jurgens
2016-06-29 17:33 ` Paul Moore [this message]
2016-06-29 19:09   ` Daniel Jurgens
2016-06-29 19:09     ` Daniel Jurgens
     [not found]     ` <DB6PR0501MB22611E2BA664DD033571AEDEC4230-wTfl6qNNZ1NK98U9gK7MJ8DSnupUy6xnnBOFsp37pqbUKgpGm//BTAC/G2K4zDHf@public.gmane.org>
2016-06-30 15:18       ` Paul Moore

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='CAHC9VhRKFmZ+thwqbq8JnGbj04+Uex4JM0CS=umjfUQB90k0VQ@mail.gmail.com' \
    --to=paul@paul-moore.com \
    --cc=chrisw@sous-sol.org \
    --cc=danielj@mellanox.com \
    --cc=dledford@redhat.com \
    --cc=eparis@parisplace.org \
    --cc=hal.rosenstock@gmail.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=sds@tycho.nsa.gov \
    --cc=sean.hefty@intel.com \
    --cc=selinux@tycho.nsa.gov \
    --cc=yevgenyp@mellanox.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.