apache / apache/accumulo

New Security Interface

Open
#1,221 7 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.