On Thu, Apr 16, 2020 at 4:36 PM Eric W. Biederman <ebiederm@xxxxxxxxxxxx> wrote: > Paul Moore <paul@xxxxxxxxxxxxxx> writes: > > On Mon, Mar 30, 2020 at 1:49 PM Richard Guy Briggs <rgb@xxxxxxxxxx> wrote: > >> On 2020-03-30 13:34, Paul Moore wrote: > >> > On Mon, Mar 30, 2020 at 12:22 PM Richard Guy Briggs <rgb@xxxxxxxxxx> wrote: > >> > > On 2020-03-30 10:26, Paul Moore wrote: > >> > > > On Mon, Mar 30, 2020 at 9:47 AM Richard Guy Briggs <rgb@xxxxxxxxxx> wrote: > >> > > > > On 2020-03-28 23:11, Paul Moore wrote: > >> > > > > > On Tue, Mar 24, 2020 at 5:02 PM Richard Guy Briggs <rgb@xxxxxxxxxx> wrote: > >> > > > > > > On 2020-03-23 20:16, Paul Moore wrote: > >> > > > > > > > On Thu, Mar 19, 2020 at 6:03 PM Richard Guy Briggs <rgb@xxxxxxxxxx> wrote: > >> > > > > > > > > On 2020-03-18 18:06, Paul Moore wrote: > > > > ... > > > >> > > Well, every time a record gets generated, *any* record gets generated, > >> > > we'll need to check for which audit daemons this record is in scope and > >> > > generate a different one for each depending on the content and whether > >> > > or not the content is influenced by the scope. > >> > > >> > That's the problem right there - we don't want to have to generate a > >> > unique record for *each* auditd on *every* record. That is a recipe > >> > for disaster. > >> > > >> > Solving this for all of the known audit records is not something we > >> > need to worry about in depth at the moment (although giving it some > >> > casual thought is not a bad thing), but solving this for the audit > >> > container ID information *is* something we need to worry about right > >> > now. > >> > >> If you think that a different nested contid value string per daemon is > >> not acceptable, then we are back to issuing a record that has only *one* > >> contid listed without any nesting information. This brings us back to > >> the original problem of keeping *all* audit log history since the boot > >> of the machine to be able to track the nesting of any particular contid. > > > > I'm not ruling anything out, except for the "let's just completely > > regenerate every record for each auditd instance". > > Paul I am a bit confused about what you are referring to when you say > regenerate every record. > > Are you saying that you don't want to repeat the sequence: > audit_log_start(...); > audit_log_format(...); > audit_log_end(...); > for every nested audit daemon? If it can be avoided yes. Audit performance is already not-awesome, this would make it even worse. > Or are you saying that you would like to literraly want to send the same > skb to each of the nested audit daemons? Ideally we would reuse the generated audit messages as much as possible. Less work is better. That's really my main concern here, let's make sure we aren't going to totally tank performance when we have a bunch of nested audit daemons. > Or are you thinking of something else? As mentioned above, I'm not thinking of anything specific, other than let's please not have to regenerate *all* of the audit record strings for each instance of an audit daemon, that's going to be a killer. Maybe we have to regenerate some, if we do, what would that look like in code? How do we handle the regeneration aspect? I worry that is going to be really ugly. Maybe we finally burn down the audit_log_format(...) function and pass structs/TLVs to the audit subsystem and the audit subsystem generates the strings in the auditd connection thread. Some of the record strings could likely be shared, others would need to be ACID/auditd dependent. I'm open to any ideas people may have. We have a problem, let's solve it. -- paul moore www.paul-moore.com