New Security Interface
- Dominant language
- Java
- Stars
- 1.2k
- Forks
- 487
- Avg merge
- 4d 5h
- Merged PRs (30d)
- 13
Description
Design for a cleaner internal security interface:
```java
public interface Security {
/**
* Only called when Accumulo is initiazed. This will initialize the security for Accumulo.
*
* @param configuration SiteConfiguration server configuration
*/
void initialize(SiteConfiguration configuration);
/**
* Return a security operation object.
*
* @return SecurityOperation Utility class for performing security operations.
*/
SecurityOperation operation();
}
```
The idea is to separate the security plugin implementation (KerberosAuthenticator, KerberosAuthorizer, ZKAuthorizer, etc), from the ServerContext and Initialization for Accumulo. Currently, we have bootstrapping security issues between ServerContext and Initialize. Initialize is a one time action but part way through it creates a ServerContext object and then initializes security. I think ServerContext should be separated from the Initialize procedure. This would simplify a lot of things since ServerContext would then always have a security state initialized, which is the typical behavior of a server.
Contributor guide
Research direction
Start by tracing the relationship between ServerContext and Initialize, then review the proposed Security interface and the listed security implementations such as KerberosAuthenticator, KerberosAuthorizer, and ZKAuthorizer. Map where security is initialized and where bootstrapping currently occurs. Done means the separation design resolves the described initialization-order problem and defines how ServerContext obtains initialized security.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, security
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100