[ 
https://issues.apache.org/jira/browse/HDFS-9395?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15129094#comment-15129094
 ] 

Colin Patrick McCabe edited comment on HDFS-9395 at 2/2/16 9:46 PM:
--------------------------------------------------------------------

So, the big question here is what should go in the audit log?  All failures, or 
just "permission denied" failures?  Or, to put it a different way, if someone 
attempts to do something and it fails because a file doesn't exist, is that 
worth an audit log entry?

We are currently inconsistent on this point.  For example, {{concat}}, 
{{getContentSummary}}, {{addCacheDirective}}, and {{setErasureEncodingPolicy}} 
create an audit log entry for all failures, but {{setOwner}}, {{delete}}, and 
{{setAclEntries}} attempt to only create an entry for 
{{AccessControlException}}-based failures.  There are a few operations, like 
{{allowSnapshot}}, {{disallowSnapshot}}, and {{startRollingUpgrade}} that never 
create audit log failure entries at all.  They simply log nothing for any 
failure, and log success for a successful operation.

So to summarize, different HDFS operations currently fall into 3 categories:
1. audit-log *all* failures
2. audit-log only {{AccessControlException}} failures
3. *never* audit-log failures

Category #3 seems like a clear violation of what people expect out of the audit 
log, since it will leave out all the unsuccessful attempts to do some 
privileged operation.  So perhaps the category #3 operations are clearly buggy. 
 The question then becomes, is the category #1 or #2 interpretation correct?  
One potential issue I see with category #2 is that if there is some failure 
that ultimately is permissions-related, but which fails to generate the 
specific {{AccessControlException}} subclass of exception, we will miss it.  So 
category #1 operations are more robust against changes in the exception 
handling.


was (Author: cmccabe):
So, the big question here is what should go in the audit log?  All failures, or 
just "permission denied" failures?  Or, to put it a different way, if someone 
attempts to do something and it fails because a file doesn't exist, is that 
worth an audit log entry?

We are currently inconsistent on this point.  For example, {{concat}}, 
{{getContentSummary}}, {{addCacheDirective}}, and {{setErasureEncodingPolicy}} 
create an audit log entry for all failures, but {{setOwner}}, {{delete}}, and 
{{setAclEntries}} attempt to only create an entry for 
{{AccessControlException}}-based failures.  There are a few operations, like 
{{allowSnapshot}}, {{disallowSnapshot}}, and {{startRollingUpgrade}} that never 
create audit log failure entries at all.  They simply log nothing for any 
failure, and log success for a successful operation.

So to summarize, operations fall into 3 categories:
1. audit-log *all* failures
2. audit-log only {{AccessControlException}} failures
3. *never* audit-log failures

Category #3 seems like a clear violation of what people expect out of the audit 
log, since it will leave out all the unsuccessful attempts to do some 
privileged operation.  So perhaps the category #3 operations are clearly buggy. 
 The question then becomes, is the category #1 or #2 interpretation correct?  
One potential issue I see with category #2 is that if there is some failure 
that ultimately is permissions-related, but which fails to generate the 
specific {{AccessControlException}} subclass of exception, we will miss it.  So 
category #1 operations are more robust against changes in the exception 
handling.

> HDFS operations vary widely in which failures they put in the audit log and 
> which they leave out
> ------------------------------------------------------------------------------------------------
>
>                 Key: HDFS-9395
>                 URL: https://issues.apache.org/jira/browse/HDFS-9395
>             Project: Hadoop HDFS
>          Issue Type: Bug
>            Reporter: Kihwal Lee
>            Assignee: Kuhu Shukla
>         Attachments: HDFS-9395.001.patch, HDFS-9395.002.patch
>
>
> Audit logging is in the fainally block along with the lock unlocking, so it 
> is always logged as success even for cases like FileNotFoundException is 
> thrown.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to