Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Security/Extension] JWT Vendor for extensions #2567

Conversation

RyanL1997
Copy link
Collaborator

@RyanL1997 RyanL1997 commented Mar 17, 2023

Description

Initial commit of JWT token generator for extensions

  • Category New feature

Issues Resolved

Check List

  • New functionality includes testing
  • New functionality has been documented
  • Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Signed-off-by: Ryan Liang <[email protected]>
@RyanL1997 RyanL1997 changed the title [Security/Extension] JWT Vendor for extensions [Security/Extension] [WIP]JWT Vendor for extensions Mar 17, 2023
@RyanL1997
Copy link
Collaborator Author

While we are having the discussion in this PR, I will create a META issue for Generate an auth token for an Extension Request and add a unit test.

@RyanL1997 RyanL1997 mentioned this pull request Mar 21, 2023
35 tasks
@RyanL1997 RyanL1997 changed the title [Security/Extension] [WIP]JWT Vendor for extensions [Security/Extension] JWT Vendor for extensions Mar 21, 2023
@RyanL1997 RyanL1997 marked this pull request as ready for review March 21, 2023 21:33
@RyanL1997 RyanL1997 force-pushed the jwt-generator-for-extensions branch from d001a6f to d5bfef3 Compare March 21, 2023 21:42
@codecov-commenter
Copy link

codecov-commenter commented Mar 21, 2023

Codecov Report

Merging #2567 (367752b) into main (a5c73f9) will decrease coverage by 0.07%.
The diff coverage is 63.23%.

📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more

@@             Coverage Diff              @@
##               main    #2567      +/-   ##
============================================
- Coverage     61.29%   61.23%   -0.07%     
  Complexity     3334     3334              
============================================
  Files           260      261       +1     
  Lines         18509    18577      +68     
  Branches       3269     3275       +6     
============================================
+ Hits          11346    11375      +29     
- Misses         5571     5601      +30     
- Partials       1592     1601       +9     
Impacted Files Coverage Δ
...opensearch/security/filter/SecurityRestFilter.java 77.77% <ø> (ø)
...g/opensearch/security/authtoken/jwt/JwtVendor.java 63.23% <63.23%> (ø)

... and 6 files with indirect coverage changes

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

Copy link
Member

@peternied peternied left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for sending this out @RyanL1997

JsonWebKey jwk = new JsonWebKey();

jwk.setKeyType(KeyType.OCTET);
jwk.setAlgorithm("HS512");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it would be worthwhile to document why we picked some of the defaults in the code next to them, HMAC was picked because ...

(BTW think HMAC is a good choice for our scenario)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is a simple T-chart of HMAC vs RSA based on the research I did:

Name/Features Pros Cons
HMAC (Hash-based Message Authentication Code) - Performance: HMAC is generally faster than RSA, as it uses symmetric key cryptography, which is computationally less expensive.

- Flexibility: HMAC can work with various hash functions, such as SHA-256, SHA-384, or SHA-512, depending on the desired security level and performance.
- Shared secret key: HMAC relies on a shared secret key between the sender and receiver.

- Not suitable for non-repudiation, as anyone with the secret key can create a valid signature.
RSA (Rivest-Shamir-Adleman) - Widely adopted: RSA is a widely-used and well-established public key cryptography algorithm, with extensive support in various libraries and systems.

- Public key cryptography: RSA uses a public and private key pair, allowing for easier key management and distribution. The public key can be shared openly, while the private key remains secret.
- Performance: RSA is generally slower than HMAC, as it involves more complex mathematical operations and requires larger key sizes to achieve the same level of security.

- Key size: RSA requires larger keys for equivalent security levels compared to symmetric algorithms like HMAC. For example, a 3072-bit RSA key provides roughly the same level of security as a 256-bit symmetric key.

Another algorithm, ECDSA (Elliptic Curve Digital Signature Algorithm), is pretty similar to RSA, but a little bit faster (the performance ranking from most efficiency to less efficiency should be: HMAC > ECDSA > RSA). However, back to our case, I agree that HMAC is good for our scenario, due to its performance and simplicity. More importantly, it meets our requirement of supporting both data integrity and authenticity, so that the payload of our token cannot be tampered.

jwk.setProperty("k", signingKey);

return jwk;
} else {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this else {...} section. There should be a single code path for the way these tokens are generated, and this is a case where customization shouldn't be allowed.

Note; if we have a user-facing usage of token generated, we could allow other options / customizations, but we should expose it via a seperate API.

Copy link
Member

@cwperks cwperks Mar 22, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@peternied This else clause is what makes this flexible to support creating JWKs with any properties that are not the default HMAC SHA512 symmetric signing key.

This would allow user's to configure asymmetric encryption for the JWT signing if desired.

i.e.

config:
    signing_key: base64.encode(<secret here>)

vs

config:
    key:
        kid: Gps4Ea8bRzBNXMrzE8ciJZKNrlTKPP2MPEBPDSUXPpo
        kty: RSA
        alg: RS256
        use: sig
        n: pGGGyC01Krfq4kR6ebiFm8L3OLdAIL7KCA4gw9iVCdo-12aAftxwTIfv59bhlktOlOhsTQ883wDn4XnquMUBW5DffZUXyf81wLP6aWR-iySANF7_bEnu-HFyl40X8QmpJImXADHjDL3D4C5ckhRqUnIqET3eQ6TWcWGnoEG6wpmE5UlZinB7koAFcLnucPcHBvLLvpMDKxN6GW6jjwn5PKQqfim5TF_xQCXlACfe-dd5x2ZVSzKmErfim-ZhLDr4D83kKSJjch7iROhs7sbh6bj_6OvIeiTDUHDN7dMZZJr-LCXyvRpJZVEZXXRlxgj9WV6UEq7UbKwmkc5653RBRw
        e: AQAB
        x5c:
            [
                "MIICmzCCAYMCBgGHCWjKXDANBgkqhkiG9w0BAQsFADARMQ8wDQYDVQQDDAZtYXN0ZXIwHhcNMjMwMzIyMTI1OTM1WhcNMzMwMzIyMTMwMTE1WjARMQ8wDQYDVQQDDAZtYXN0ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkYYbILTUqt+riRHp5uIWbwvc4t0AgvsoIDiDD2JUJ2j7XZoB+3HBMh+/n1uGWS06U6GxNDzzfAOfheeq4xQFbkN99lRfJ/zXAs/ppZH6LJIA0Xv9sSe74cXKXjRfxCakkiZcAMeMMvcPgLlySFGpScioRPd5DpNZxYaegQbrCmYTlSVmKcHuSgAVwue5w9wcG8su+kwMrE3oZbqOPCfk8pCp+KblMX/FAJeUAJ97513nHZlVLMqYSt+Kb5mEsOvgPzeQpImNyHuJE6GzuxuHpuP/o68h6JMNQcM3t0xlkmv4sJfK9GkllURlddGXGCP1ZXpQSrtRsrCaRznrndEFHAgMBAAEwDQYJKoZIhvcNAQELBQADggEBAFuycpje7FnIGBwurU/RwylGO1yx5NX/7LORv1q1fzaQoz4ti3BZTSwTM/K2NsWv3xJAYNm5sqL5CwcJ9PlSOVWRpUt0ce/zBQmAylYUWnfyym7p+JXV9317eT3BeKV04LfGTvVPSmFQRigOuyrihOQ7AQg8zFRJUWvfGFrt3Jl8XRQ0qZAFLCoi9177onEVtdCXSiyIdjIEFE8GTyeRyqm0ed7l8HyLRWIjXCud17qGxZyaL1VqiCHfJGgJBES2LqCau8vKqnN8sLO+gnj/jE8QsJQ6mF+kWKK1/JMUwWscrnsB+rxktttzqo/WfKQiB1CjmoGkYIBlMljLpdaUdQo="
            ]
        x5t: 3nw2MTcS2gwFcGdnlGaB0RPOYG8
        x5t#S256: 2VUpjQgUQW1TyPGP6PSt0wLUDkTINRqmJxLBr2F-Ps0

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I recommend we start exposing as little surface area as possible around these new features.

As this is part of flow where generating the sensitive tokens e.g. on-behalf-of user tokens for extensions. I would advocate that we minimize the risk of misconfiguration by locking down these values in code.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@peternied and @cwperks what was the verdict here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the experimental release we are aiming for sensible defaults. In this case HMAC SHA512 is chosen as the sensible defaults. Customizability will be added, but less of a priority then making sure all key functionality works first.

}

//TODO:Getting roles from User
public Map<String, String> prepareClaimsForUser(User user, ThreadPool threadPool) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure we've fully locked down the design - but I am in the camp that we should not include any mapped roles/backend roles onto this claims. @RyanL1997 Could you find out where we are making this decision and reference it?

If we are not including any AuthZ information we should make sure we remove it from here.

Copy link
Collaborator Author

@RyanL1997 RyanL1997 Mar 22, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, we can continue our discussion over here: #2545. For this one, I was just write up the function we may need for implementing it. 100% we can change/remove it anytime. And also, this function should be locate in a separate class if we choose to go down this path.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've got another issue about user information parity, that might cover it, but I don't think it clearly calls out that we don't include this information inside the authentication token. Or is there another issue where we have this called out, if not want to make one so we can track?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure, thanks for the information! I will create separate issue attach to this for the tracking.

Copy link
Member

@cwperks cwperks Mar 30, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@peternied @RyanL1997 I'm curious to get your thoughts on an idea of encrypting the value of the claim itself for sensitive claims. For cases with an external IdP, I think we will need to store the roles in a claim of the token because they cannot be looked up when the security plugin receives the token as part of a request. Since they cannot be looked up, they will need to be part of the claims of the token. The current JWT backend (and OIDC and SAML since they also use JWTs) already assumes that roles are included as a claim of the token.

Encryption of the sensitive claim can be done using a utility like (Reference SO post: https://stackoverflow.com/a/57902503):

import java.util.Arrays;
import java.util.Base64;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class EncryptionDecryptionUtil {

    public static String encrypt(final String secret, final String data) {


        byte[] decodedKey = Base64.getDecoder().decode(secret);

        try {
            Cipher cipher = Cipher.getInstance("AES");
            // rebuild key using SecretKeySpec
            SecretKey originalKey = new SecretKeySpec(Arrays.copyOf(decodedKey, 16), "AES");
            cipher.init(Cipher.ENCRYPT_MODE, originalKey);
            byte[] cipherText = cipher.doFinal(data.getBytes("UTF-8"));
            return Base64.getEncoder().encodeToString(cipherText);
        } catch (Exception e) {
            throw new RuntimeException(
                    "Error occured while encrypting data", e);
        }

    }

    public static String decrypt(final String secret,
            final String encryptedString) {


        byte[] decodedKey = Base64.getDecoder().decode(secret);

        try {
            Cipher cipher = Cipher.getInstance("AES");
            // rebuild key using SecretKeySpec
            SecretKey originalKey = new SecretKeySpec(Arrays.copyOf(decodedKey, 16), "AES");
            cipher.init(Cipher.DECRYPT_MODE, originalKey);
            byte[] cipherText = cipher.doFinal(Base64.getDecoder().decode(encryptedString));
            return new String(cipherText);
        } catch (Exception e) {
            throw new RuntimeException(
                    "Error occured while decrypting data", e);
        }
    }
}

The secret that this function takes is different than the signing_key that this PR introduces and would be another setting on the same level. I wrote a test with this behavior here: RyanL1997/security@jwt-generator-for-extensions...cwperks:security:jwt-generator-for-extensions

Here's the output of the test. The first line is the encrypted claim that the extension would see and below is decrypted that the security plugin would be able to decrypt from the claim inside the token.

org.opensearch.security.authtoken.jwt.JwtVendorTest > testCreateJwtWithRoles STANDARD_OUT
    rolesClaim: U5CjroB/LS95E5nrKl+WMw==
    roles: IT,HR

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @cwperks, thanks for putting this together. This is making sense to me.

public Map<String, String> prepareClaimsForUser(User user, ThreadPool threadPool) {
Map<String, String> claims = new HashMap<>();
this.threadContext = threadPool.getThreadContext();
final TransportAddress caller = threadContext.getTransient(ConfigConstants.OPENDISTRO_SECURITY_REMOTE_ADDRESS);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Assuming we are keeping AuthZ info in the token, otherwise this should be deleted) We shouldn't be attributing any roles based on the remote address because the request will be performed from that address but via the extension - which is elsewhere. We might want to break this out into a separate issue to discuss.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RyanL1997, did this get split into the separate issue? It is the last area where I have a concern around merging. As long as there is an issue, I am fine with following-up in this case but could you share the link please? Thank you.

Copy link
Contributor

@stephen-crawford stephen-crawford left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Ryan, thank you for putting this together. Overall, I don't think there was much that seemed like it needed re-visiting. The obvious questions will be around the claims we include in the tokens but I did not leave comments for those. Great job.

@RyanL1997 RyanL1997 force-pushed the jwt-generator-for-extensions branch from 7e73c87 to 6bd8d40 Compare March 24, 2023 02:08
throw new RuntimeException(e);
}
this.jwtProducer = jwtProducer;
timeProvider = System::currentTimeMillis;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have a good alternative since we need to have a fixed reference point and this is the most common way to get time relative to the Epoch. However, it is worth noting that this is not monotonic so you could get subsequent calls with the same value returned even if the time difference is more than 1 ms. It should not matter if we have some clock skew tolerance but just worth mentioning.

@peternied
Copy link
Member

peternied commented Mar 24, 2023

Hey, @RyanL1997, I noticed that this code is generating a JWT, but it doesn't seem to be connected with any user scenarios. Can you provide some insight into what you had in mind for the evolution of this pull request so it would be merged?

To enhance the functionality of this pull request, I recommend that we add the ability to generate a token for an authenticated user and accept that generated token and validate it.

Let me know your thoughts on this.

@RyanL1997
Copy link
Collaborator Author

Hey, @RyanL1997, I noticed that this code is generating a JWT, but it doesn't seem to be connected with any user scenarios. Can you provide some insight into what you had in mind for the evolution of this pull request so it would be merged?

To enhance the functionality of this pull request, I recommend that we add the ability to generate a token for an authenticated user and accept that generated token and validate it.

Let me know your thoughts on this.

Hi @peternied, thanks for the advice! I just had a conversation with @cwperks about the JIT concept related to authentication backend, and I'm looking forward into some details for the authentication backend next week after our meetups. After that, I will post our findings here/a new issue.

@RyanL1997
Copy link
Collaborator Author

RyanL1997 commented Mar 27, 2023

Hi, @peternied. I had a conversation with @cwperks today about the authentication backend. For answering your questions:

Can you provide some insight into what you had in mind for the evolution of this pull request so it would be merged

I think the purpose of this PR is to setup a basic structure of this JIT token, such as, some of the components we discussed above for token claims: subject, audience ..etc. I guess the only tricky part for now is about the how are we gonna deal with the roles, encrypted/not-encrypted/include/not-included. For these parts, we can discuss it in another review session with a documentations and modify them later, but I think we can use this basic structure for future development. For now, I just started to write a draft PR for authentication backend, and I do need some of the basic concepts from this PR for token verification.

@cwperks
Copy link
Member

cwperks commented Mar 28, 2023

Hi @peternied , since this a component of a larger feature (Security for Extensions), should we merge this into a feature branch until the feature is ready to merge to main?

@peternied
Copy link
Member

Let's merge changes into the main branch when they benefit security plugin customers. I recommend moving this pull request to a feature/jwt branch, and once it's functional enough for customer use and end-to-end validation, merge it into the main branch.

Copy link
Contributor

@stephen-crawford stephen-crawford left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this together Ryan. It looks like all my previous comments were addressed. I am happy to merge this PR and then follow up as needed for velocity.

public Map<String, String> prepareClaimsForUser(User user, ThreadPool threadPool) {
Map<String, String> claims = new HashMap<>();
this.threadContext = threadPool.getThreadContext();
final TransportAddress caller = threadContext.getTransient(ConfigConstants.OPENDISTRO_SECURITY_REMOTE_ADDRESS);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@RyanL1997, did this get split into the separate issue? It is the last area where I have a concern around merging. As long as there is an issue, I am fine with following-up in this case but could you share the link please? Thank you.


jwtVendor.createJwt(issuer, subject, audience, expirySeconds);
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may want to add further negative test cases down the road. Since you are only looking at the vending this seems fine for now, but once we have verification as well, we will want to test expiration compliance and signature mismatches.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

100% We need an authc backend to do the verification, so that we can test them. I''m working on that.

@RyanL1997 RyanL1997 changed the base branch from main to feature/extensions March 31, 2023 13:43
@RyanL1997
Copy link
Collaborator Author

RyanL1997 commented Mar 31, 2023

Hi @scrawfor99, here is a link for place holder (#2619). Me and Craig are working on a documentation, and I will transfer that into this issue. Btw I just change the base branch into the feature branch I created. As Peter said before we can go through the entire functionality before we merge into main.

@RyanL1997 RyanL1997 merged commit 1681823 into opensearch-project:feature/extensions Mar 31, 2023
stephen-crawford pushed a commit to stephen-crawford/security that referenced this pull request Apr 12, 2023
MaciejMierzwa pushed a commit to MaciejMierzwa/security that referenced this pull request Apr 20, 2023
* JWT Vendor for extensions
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Maciej Mierzwa <[email protected]>
MaciejMierzwa pushed a commit to MaciejMierzwa/security that referenced this pull request Apr 27, 2023
* JWT Vendor for extensions
Signed-off-by: Ryan Liang <[email protected]>
Signed-off-by: Maciej Mierzwa <[email protected]>
peternied added a commit to peternied/security that referenced this pull request Aug 25, 2023
commit 1e24bbb
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 25 12:06:53 2023 -0700

    Fixed the exception in keyutils

    Signed-off-by: Ryan Liang <[email protected]>

commit 4b406c5
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 25 11:41:14 2023 -0700

    Change the null check right after the jwtparserbuilder

    Signed-off-by: Ryan Liang <[email protected]>

commit a805843
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 25 11:11:13 2023 -0700

    Change to use copyof in getSecurityRoles in AuthCredentials class

    Signed-off-by: Ryan Liang <[email protected]>

commit 308f269
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 25 11:02:04 2023 -0700

    Add the null or empty check for signingkey in keyUtils

    Signed-off-by: Ryan Liang <[email protected]>

commit 40eed32
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 25 09:55:19 2023 -0700

    Fix V6 and V7 and lint

    Signed-off-by: Ryan Liang <[email protected]>

commit 3c76151
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 25 09:29:17 2023 -0700

    Fix comment - Craig

    Signed-off-by: Ryan Liang <[email protected]>

commit 7f2fc19
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 24 23:01:24 2023 -0700

    Fix some comments 08/24

    Signed-off-by: Ryan Liang <[email protected]>

commit 4841b25
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 24 10:50:24 2023 -0700

    Add the constant for defaut service in create obo endpoint

    Signed-off-by: Ryan Liang <[email protected]>

commit 477b505
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 20:18:05 2023 -0700

    Remove the unrelated line in AccountApiTest l77

    Signed-off-by: Ryan Liang <[email protected]>

commit f42d2f5
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 19:40:33 2023 -0700

    Re-edit the error msg for createoboendpoint

    Signed-off-by: Ryan Liang <[email protected]>

commit a272ccb
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 19:34:56 2023 -0700

    Rename the obo endpoint

    Signed-off-by: Ryan Liang <[email protected]>

commit c021473
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 19:30:45 2023 -0700

    Correct the getClusterName()

    Signed-off-by: Ryan Liang <[email protected]>

commit 8b5158d
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 19:11:07 2023 -0700

    Use ClusterInfoHolder to pass clusterName

    Signed-off-by: Ryan Liang <[email protected]>

commit 336aa57
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 18:18:42 2023 -0700

    Change the error msg in jwtvendorTests too

    Signed-off-by: Ryan Liang <[email protected]>

commit 682379d
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 17:21:11 2023 -0700

    Switch to assertThat in obo authenticator test

    Signed-off-by: Ryan Liang <[email protected]>

commit cb3406a
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 16:59:30 2023 -0700

    Add comment in DynamicConfigModelV7

    Signed-off-by: Ryan Liang <[email protected]>

commit 15c8530
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 16:47:13 2023 -0700

    Change to assertThrows for obo authenticator tests

    Signed-off-by: Ryan Liang <[email protected]>

commit e56bf01
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 16:39:24 2023 -0700

    Rename to OnBehalfOfSettings in ConfigV6

    Signed-off-by: Ryan Liang <[email protected]>

commit 62cfb4f
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 16:29:31 2023 -0700

    Add comment for authentication failure in obo authenticator

    Signed-off-by: Ryan Liang <[email protected]>

commit d0ebe91
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 16:22:08 2023 -0700

    Specify the error msg of missing signing key in jwtvendor

    Signed-off-by: Ryan Liang <[email protected]>

commit ca95380
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 16:12:46 2023 -0700

    Refactor the jwtvendor expiry and set up upper limit

    Signed-off-by: Ryan Liang <[email protected]>

commit 884f7a1
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 13:51:11 2023 -0700

    Flip the boolean logic of roleSecurityMode

    Signed-off-by: Ryan Liang <[email protected]>

commit e1021c2
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 13:36:05 2023 -0700

    Refactor the bwc mode into roleSecurityMode

    Signed-off-by: Ryan Liang <[email protected]>

commit c1a825b
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 12:03:17 2023 -0700

    Refactor in jwtVendor 1

    Signed-off-by: Ryan Liang <[email protected]>

commit 8eac5cd
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 23 09:53:24 2023 -0700

    Change the comment in backend registry

    Signed-off-by: Ryan Liang <[email protected]>

commit b0ac41a
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 17:58:15 2023 -0700

    Revert the unrelated change in SecurityRestFilter

    Signed-off-by: Ryan Liang <[email protected]>

commit b64460d
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 17:53:32 2023 -0700

    Remove stale function

    Signed-off-by: Ryan Liang <[email protected]>

commit 54bca2a
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 17:36:05 2023 -0700

    Refactor the obo endpoint

    Signed-off-by: Ryan Liang <[email protected]>

commit e429d7b
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 17:16:47 2023 -0700

    Refactor the KeyUtils OBOAuthenticator and JwtAuthenticator with jwtParserBuilder

    Signed-off-by: Ryan Liang <[email protected]>

commit 72dcec1
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 16:22:42 2023 -0700

    Some minor refactoring in obo authenticator

    Signed-off-by: Ryan Liang <[email protected]>

commit 6f0e79b
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 15:46:19 2023 -0700

    Remove the malformed token warning for backendroles extraction

    Signed-off-by: Ryan Liang <[email protected]>

commit 1ba378e
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 15:42:38 2023 -0700

    Refactor the EncryptionDecryptionUtil

    Signed-off-by: Ryan Liang <[email protected]>

commit b315559
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 12:02:06 2023 -0700

    Fix the exception type in JwtVendorTests

    Signed-off-by: Ryan Liang <[email protected]>

commit 6f49801
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 11:35:10 2023 -0700

    Remove the if condition in oboconfig for integ testing

    Signed-off-by: Ryan Liang <[email protected]>

commit 034aa34
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 11:22:45 2023 -0700

    Set up creatJwkException in exceptionUtils and apply that in JwtVendor constructor

    Signed-off-by: Ryan Liang <[email protected]>

commit 0f0478d
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 10:14:55 2023 -0700

    Rename the KeyUtils

    Signed-off-by: Ryan Liang <[email protected]>

commit a4e7aff
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 09:46:27 2023 -0700

    Refactor the backendroles claim into br

    Signed-off-by: Ryan Liang <[email protected]>

commit 2ff746e
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 09:31:50 2023 -0700

    Fix lint

    Signed-off-by: Ryan Liang <[email protected]>

commit 9ce36dc
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 01:11:24 2023 -0700

    Refactor the OBO Authenticator part2

    Signed-off-by: Ryan Liang <[email protected]>

commit e52c5ce
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 00:55:33 2023 -0700

    Refactor the backendrole extraction in oboauthenticator

    Signed-off-by: Ryan Liang <[email protected]>

commit 9c9e060
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 00:41:51 2023 -0700

    Refactor the role extraction in oboauthenticator

    Signed-off-by: Ryan Liang <[email protected]>

commit 387027b
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 00:18:31 2023 -0700

    Refactor the logic in JwtVendor

    Signed-off-by: Ryan Liang <[email protected]>

commit 267255c
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 22 00:01:15 2023 -0700

    Add integration test case for obo permission

    Signed-off-by: Ryan Liang <[email protected]>

commit 93bc8c6
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 21 19:18:49 2023 -0700

    Remove unused constants variable in OBO authenticator

    Signed-off-by: Ryan Liang <[email protected]>

commit 878a107
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 21 19:10:27 2023 -0700

    Refactor the encryptiondecryptionutilstests

    Signed-off-by: Ryan Liang <[email protected]>

commit 1c1bae6
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 21 14:53:45 2023 -0700

    Remove the null check in oboconfig

    Signed-off-by: Ryan Liang <[email protected]>

commit 7e3824e
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 21 14:44:07 2023 -0700

    Remove the wording of seconds in obo endpoint and make the expiry into configconstants

    Signed-off-by: Ryan Liang <[email protected]>

commit a126512
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 21 12:48:33 2023 -0700

    Use constant util in Obo integration test

    Signed-off-by: Ryan Liang <[email protected]>

commit e5a32c6
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 21 12:13:50 2023 -0700

    Rename the obo endpoint path to generateobotoekn

    Signed-off-by: Ryan Liang <[email protected]>

commit e09a902
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 21 09:15:53 2023 -0700

    Remove the unused instance in configV6

    Signed-off-by: Ryan Liang <[email protected]>

commit af8aaa7
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 18 13:05:04 2023 -0700

    Fix the lint

    Signed-off-by: Ryan Liang <[email protected]>

commit 9103b23
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 18 13:01:56 2023 -0700

    Add permission obo/create for accessing create obo endpoint

    Signed-off-by: Ryan Liang <[email protected]>

commit 2349213
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 17 15:54:38 2023 -0700

    Change the name into keyUtils with the s

    Signed-off-by: Ryan Liang <[email protected]>

commit dae0ac7
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 17 15:48:12 2023 -0700

    Switch to try/catch + assertEquals for JwtVendorTest

    Signed-off-by: Ryan Liang <[email protected]>

commit d918d7a
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 17 15:39:46 2023 -0700

    Change the JwtVendorTest with manually built-up assertThrow

    Signed-off-by: Ryan Liang <[email protected]>

commit f47026b
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 17 14:35:13 2023 -0700

    Fix the typo in exceptionUtils

    Signed-off-by: Ryan Liang <[email protected]>

commit 43b8d5d
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 17 14:33:22 2023 -0700

    Remove stacktrace debug statement in OBOAutehnticator

    Signed-off-by: Ryan Liang <[email protected]>

commit a2c6db1
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 17 13:04:30 2023 -0700

    Change some of the methods name into camle case instead of snake case

    Signed-off-by: Ryan Liang <[email protected]>

commit ee79b49
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 17 11:55:11 2023 -0700

    Add unit tests for EncryptionDecryptionUtil

    Signed-off-by: Ryan Liang <[email protected]>

commit 3ebff2b
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 17 09:43:43 2023 -0700

    Work around for not set static cluster service

    Signed-off-by: Ryan Liang <[email protected]>

commit a4efad6
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 16 13:31:57 2023 -0700

    Modify the getDynamicOnBehalfOfSettings() to return settings.Empty if there is no changes

    Signed-off-by: Ryan Liang <[email protected]>

commit e23d757
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 16 12:26:39 2023 -0700

    Encapsulate the logic for endpoints access checking into a method

    Signed-off-by: Ryan Liang <[email protected]>

commit be26148
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 16 12:09:25 2023 -0700

    Remove useless comments

    Signed-off-by: Ryan Liang <[email protected]>

commit bef85da
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 16 11:57:39 2023 -0700

    Remove the enforcing of token type for OBO auth

    Signed-off-by: Ryan Liang <[email protected]>

commit 1f79431
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 16 11:45:45 2023 -0700

    Change the field name reason in obo endpoint to description

    Signed-off-by: Ryan Liang <[email protected]>

commit 1f12e5e
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 16 11:15:56 2023 -0700

    Change the backendrole check's claim name into br

    Signed-off-by: Ryan Liang <[email protected]>

commit b2c7d75
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 15 23:30:25 2023 -0700

    Address some comment 2

    Signed-off-by: Ryan Liang <[email protected]>

commit d79973c
Author: Ryan Liang <[email protected]>
Date:   Tue Aug 15 23:24:16 2023 -0700

    Address some comment 1

    Signed-off-by: Ryan Liang <[email protected]>

commit 8a96cab
Author: Sam <[email protected]>
Date:   Fri Aug 18 14:43:07 2023 +0100

    Feature/extensions bwc setting (opensearch-project#3180)

    ### Description
    This Draft PR includes the new setting bwcPluginMode (backward
    compatible plugin mode for extensions )

    ### Issues Resolved
    opensearch-project#2616

    Is this a backport? If so, please add backport PR # and/or commits #

    ### Testing
    [Please provide details of testing done: unit testing, integration
    testing and manual testing]

    ### Check List
    - [ ] New functionality includes testing
    - [ ] New functionality has been documented
    - [x] Commits are signed per the DCO using --signoff

    By submitting this pull request, I confirm that my contribution is made
    under the terms of the Apache 2.0 license.
    For more information on following Developer Certificate of Origin and
    signing off your commits, please check
    [here](https://github.com/opensearch-project/OpenSearch/blob/main/CONTRIBUTING.md#developer-certificate-of-origin).

    ---------

    Signed-off-by: Sam <[email protected]>

commit 91f4478
Merge: e42e4d3 88b6d23
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 14 23:30:37 2023 -0700

    Merge branch 'main' into feature/extensions

commit e42e4d3
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 14 10:12:58 2023 -0700

    [Feature/Extension] Remove hostmapping from create OBO endpoint. (opensearch-project#3161)

    Signed-off-by: Ryan Liang <[email protected]>

commit ade34b4
Merge: 6d8e0e2 05f12d8
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 11 11:37:21 2023 -0700

    Merge branch 'main' into feature/extensions

commit 6d8e0e2
Merge: 493b53f 3139c18
Author: Ryan Liang <[email protected]>
Date:   Thu Aug 10 21:11:43 2023 -0700

    Merge branch 'main' into feature/extensions

commit 493b53f
Merge: 30cf5b1 46989b5
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 9 12:00:14 2023 -0700

    Merge branch 'main' into feature/extensions

commit 30cf5b1
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 9 10:10:24 2023 -0700

    [Feature/Extension] Add cluster id check for OBO Authenticator (opensearch-project#3117)

    ---------

    Signed-off-by: Ryan Liang <[email protected]>

commit 058f8ec
Merge: d643fb2 6cc90e6
Author: Ryan Liang <[email protected]>
Date:   Mon Aug 7 12:33:57 2023 -0700

    Merge branch 'main' into feature/extensions

commit d643fb2
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 4 22:57:18 2023 -0700

    [Feature/Extension] Restrict OBO token's usage for certain endpoints (opensearch-project#3008)

    Signed-off-by: Ryan Liang <[email protected]>

commit 2319059
Merge: d634d60 527495d
Author: Ryan Liang <[email protected]>
Date:   Fri Aug 4 08:50:34 2023 -0700

    Merge branch 'main' into feature/extensions

commit d634d60
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 2 13:09:03 2023 -0700

    [Feature/Extension] Add configuration of disable OBO (opensearch-project#3047)

    Signed-off-by: Ryan Liang <[email protected]>

commit df3dba3
Merge: 1268dee 5384272
Author: Ryan Liang <[email protected]>
Date:   Wed Aug 2 09:42:04 2023 -0700

    Merge branch 'main' into feature/extensions

commit 1268dee
Merge: a9451dd 8063e1b
Author: Ryan Liang <[email protected]>
Date:   Tue Jul 25 11:23:05 2023 -0700

    Merge branch 'main' into feature/extensions

commit a9451dd
Merge: 671c772 59e2657
Author: Ryan Liang <[email protected]>
Date:   Mon Jul 24 13:30:37 2023 -0700

    Merge branch 'main' into feature/extensions

commit 671c772
Merge: 67515bc f1be2d7
Author: Ryan Liang <[email protected]>
Date:   Tue Jul 18 09:04:25 2023 -0700

    Merge branch 'main' into feature/extensions

commit 67515bc
Merge: 88f32e9 0e6608d
Author: Ryan Liang <[email protected]>
Date:   Thu Jul 13 11:18:07 2023 -0700

    Merge branch 'main' into feature/extensions

commit 88f32e9
Author: Ryan Liang <[email protected]>
Date:   Fri Jul 7 11:42:21 2023 -0700

    [Feature/Extension] Add oboauthcbackend registry and set up e2e endpoint testing flow (opensearch-project#2857)

    * Add OBO Authbackend

    Signed-off-by: Peter Nied <[email protected]>
    Signed-off-by: Ryan Liang <[email protected]>
    Co-authored-by: Peter Nied <[email protected]>

commit 8c3c639
Merge: 21891d7 4eef662
Author: Ryan Liang <[email protected]>
Date:   Mon Jul 3 10:34:27 2023 -0700

    Merge branch 'main' into feature/extensions

commit 21891d7
Merge: 8ad24ad 7546c05
Author: Ryan Liang <[email protected]>
Date:   Thu Jun 29 13:28:12 2023 -0700

    Merge branch 'feature-branch-sync-629' into feature/extensions

commit 8ad24ad
Author: Ryan Liang <[email protected]>
Date:   Thu Jun 29 13:23:04 2023 -0700

    Revert "Feature branch sync 06/29/2023 (opensearch-project#2918)" (opensearch-project#2920)

    This reverts commit 748a711.

commit 748a711
Author: Ryan Liang <[email protected]>
Date:   Thu Jun 29 12:37:08 2023 -0700

    Feature branch sync 06/29/2023 (opensearch-project#2918)

    * add search model group permission to ml_read_access role (opensearch-project#2855)

    * add search model group permission to ml_read_access role

    Signed-off-by: Bhavana Ramaram <[email protected]>

    * IntegrationTest spotless (opensearch-project#2863)

    Signed-off-by: Stephen Crawford <[email protected]>

    * Format everything (opensearch-project#2866)

    * Use boucycastle PEM reader instead of reg expression (opensearch-project#2864)

    Use BouncyCastle PEMReader instead of
    regular expression to read and parse private key pem files.

    Signed-off-by: Andrey Pleskach <[email protected]>

    * Adding field level security test cases for FlatFields (opensearch-project#2876)

    Signed-off-by: Peter Nied <[email protected]>

    * Update snappy to 1.1.10.1 and guava to 32.0.1-jre (opensearch-project#2886)

    * Update snappy to 1.1.10.1 and guava to 32.0.1-jre

    Signed-off-by: Craig Perkins <[email protected]>

    * Upgrade kafka to 3.5.0

    Signed-off-by: Craig Perkins <[email protected]>

    * Force snappy

    Signed-off-by: Craig Perkins <[email protected]>

    * Add runtime dependency on org.scala-lang.modules:scala-java8-compat_3:1.0.2 to fix issue with KafkaSinkTest

    Signed-off-by: Craig Perkins <[email protected]>

    ---------

    Signed-off-by: Craig Perkins <[email protected]>

    * Role permissions order tool and workflow (opensearch-project#2733)

    * Check Permissions Order tool and workflow

    Adds a NodeJS tool that can inspect yaml role definitions, check if they are in alphabetical order, correct them if required.

    Signed-off-by: Peter Nied <[email protected]>

    * Apply fixes to roles.yml files

    Signed-off-by: Peter Nied <[email protected]>

    * Fixing busted test, adding findArrayInJson for response bodies

    Signed-off-by: Peter Nied <[email protected]>

    ---------

    Signed-off-by: Peter Nied <[email protected]>
    Signed-off-by: Peter Nied <[email protected]>

    * Misc changes (opensearch-project#2902)

    Moved isStatic and isReserved methods to the
    SecurityDynamicConfiguration class

    Signed-off-by: Andrey Pleskach <[email protected]>

    * Update triaging guidelines (opensearch-project#2899)

    * Update triaging guidelines

    Signed-off-by: Stephen Crawford <[email protected]>
    Signed-off-by: Stephen Crawford <[email protected]>

    * fix cluster perm classification for msearch template (opensearch-project#2892)

    * fix cluster perm classification for msearch template

    Signed-off-by: Derek Ho <[email protected]>

    * move test to unit test file

    Signed-off-by: Derek Ho <[email protected]>

    * fully revert integration test file

    Signed-off-by: Derek Ho <[email protected]>

    * Update src/test/java/org/opensearch/security/privileges/PrivilegesEvaluatorUnitTest.java

    Signed-off-by: Stephen Crawford <[email protected]>

    * spotless

    Signed-off-by: Derek Ho <[email protected]>

    ---------

    Signed-off-by: Derek Ho <[email protected]>
    Signed-off-by: Stephen Crawford <[email protected]>
    Co-authored-by: Stephen Crawford <[email protected]>

    * [Doc] Add architecture document (opensearch-project#2869)

    * Add initial architecture document

    Signed-off-by: Peter Nied <[email protected]>

    * [Enhancement] Parallel test jobs for CI (opensearch-project#2861)

    * Split multiple tests into separate gradle tasks.
      * Tasks are configured in "splitTestConfig" map in build.gradle file.
        Map allows to use all patterns from TestFilter like:
        includeTestsMatching, excludeTestsMatching, includeTest etc.
      * Tasks are automatically generated from "splitTestConfig" map.
      * Two new Gradle tasks: listTasksAsJSON and listTasksAsParam to
        output task names to console. First one outputs them as a JSON
        and second - in gradlew "-x <TASK>" format to use in CLI.
      * Patterns included in tasks are automatically excluded from main
        "test" task but at the same time generated tasks are dependencies
        for "test". Running "gradlew test" will run whole suite at once.
    * CI pipeline has been configured to accomodate all changes.
      * New 'master' task to generate list of jobs to run in parallel.
      * Updated matrix strategy to include task name to start.

    Signed-off-by: Pawel Gudel <[email protected]>

    * Bump BouncyCastle from jdk15on to jdk15to18 (opensearch-project#2901)

    jdk15to18 contains fix for
     - CVE-2023-33201 - Medium
       Severity Vulnerability

    Signed-off-by: Andrey Pleskach <[email protected]>

    * Spotless Apply

    Signed-off-by: Ryan Liang <[email protected]>

    ---------

    Signed-off-by: Bhavana Ramaram <[email protected]>
    Signed-off-by: Stephen Crawford <[email protected]>
    Signed-off-by: Andrey Pleskach <[email protected]>
    Signed-off-by: Peter Nied <[email protected]>
    Signed-off-by: Craig Perkins <[email protected]>
    Signed-off-by: Peter Nied <[email protected]>
    Signed-off-by: Stephen Crawford <[email protected]>
    Signed-off-by: Derek Ho <[email protected]>
    Signed-off-by: Pawel Gudel <[email protected]>
    Signed-off-by: Ryan Liang <[email protected]>
    Co-authored-by: Bhavana Ramaram <[email protected]>
    Co-authored-by: Stephen Crawford <[email protected]>
    Co-authored-by: Andrey Pleskach <[email protected]>
    Co-authored-by: Peter Nied <[email protected]>
    Co-authored-by: Craig Perkins <[email protected]>
    Co-authored-by: Derek Ho <[email protected]>
    Co-authored-by: pawel-gudel-eliatra <[email protected]>

commit 7546c05
Author: Ryan Liang <[email protected]>
Date:   Thu Jun 29 11:50:58 2023 -0700

    Spotless Apply

    Signed-off-by: Ryan Liang <[email protected]>

commit 81b7818
Author: Andrey Pleskach <[email protected]>
Date:   Thu Jun 29 15:54:21 2023 +0200

    Bump BouncyCastle from jdk15on to jdk15to18 (opensearch-project#2901)

    jdk15to18 contains fix for
     - CVE-2023-33201 - Medium
       Severity Vulnerability

    Signed-off-by: Andrey Pleskach <[email protected]>

commit 95efddd
Author: pawel-gudel-eliatra <[email protected]>
Date:   Wed Jun 28 22:41:46 2023 +0200

    [Enhancement] Parallel test jobs for CI (opensearch-project#2861)

    * Split multiple tests into separate gradle tasks.
      * Tasks are configured in "splitTestConfig" map in build.gradle file.
        Map allows to use all patterns from TestFilter like:
        includeTestsMatching, excludeTestsMatching, includeTest etc.
      * Tasks are automatically generated from "splitTestConfig" map.
      * Two new Gradle tasks: listTasksAsJSON and listTasksAsParam to
        output task names to console. First one outputs them as a JSON
        and second - in gradlew "-x <TASK>" format to use in CLI.
      * Patterns included in tasks are automatically excluded from main
        "test" task but at the same time generated tasks are dependencies
        for "test". Running "gradlew test" will run whole suite at once.
    * CI pipeline has been configured to accomodate all changes.
      * New 'master' task to generate list of jobs to run in parallel.
      * Updated matrix strategy to include task name to start.

    Signed-off-by: Pawel Gudel <[email protected]>

commit 766389b
Author: Peter Nied <[email protected]>
Date:   Wed Jun 28 15:28:11 2023 -0500

    [Doc] Add architecture document (opensearch-project#2869)

    * Add initial architecture document

    Signed-off-by: Peter Nied <[email protected]>

commit c1d2127
Author: Derek Ho <[email protected]>
Date:   Wed Jun 28 15:21:04 2023 -0400

    fix cluster perm classification for msearch template (opensearch-project#2892)

    * fix cluster perm classification for msearch template

    Signed-off-by: Derek Ho <[email protected]>

    * move test to unit test file

    Signed-off-by: Derek Ho <[email protected]>

    * fully revert integration test file

    Signed-off-by: Derek Ho <[email protected]>

    * Update src/test/java/org/opensearch/security/privileges/PrivilegesEvaluatorUnitTest.java

    Signed-off-by: Stephen Crawford <[email protected]>

    * spotless

    Signed-off-by: Derek Ho <[email protected]>

    ---------

    Signed-off-by: Derek Ho <[email protected]>
    Signed-off-by: Stephen Crawford <[email protected]>
    Co-authored-by: Stephen Crawford <[email protected]>

commit 37f277e
Author: Stephen Crawford <[email protected]>
Date:   Mon Jun 26 15:28:13 2023 -0400

    Update triaging guidelines (opensearch-project#2899)

    * Update triaging guidelines

    Signed-off-by: Stephen Crawford <[email protected]>
    Signed-off-by: Stephen Crawford <[email protected]>

commit 926bdda
Author: Andrey Pleskach <[email protected]>
Date:   Mon Jun 26 20:09:39 2023 +0200

    Misc changes (opensearch-project#2902)

    Moved isStatic and isReserved methods to the
    SecurityDynamicConfiguration class

    Signed-off-by: Andrey Pleskach <[email protected]>

commit 9cd0198
Author: Peter Nied <[email protected]>
Date:   Mon Jun 26 10:04:39 2023 -0500

    Role permissions order tool and workflow (opensearch-project#2733)

    * Check Permissions Order tool and workflow

    Adds a NodeJS tool that can inspect yaml role definitions, check if they are in alphabetical order, correct them if required.

    Signed-off-by: Peter Nied <[email protected]>

    * Apply fixes to roles.yml files

    Signed-off-by: Peter Nied <[email protected]>

    * Fixing busted test, adding findArrayInJson for response bodies

    Signed-off-by: Peter Nied <[email protected]>

    ---------

    Signed-off-by: Peter Nied <[email protected]>
    Signed-off-by: Peter Nied <[email protected]>

commit 4bb144f
Author: Craig Perkins <[email protected]>
Date:   Wed Jun 21 09:31:47 2023 -0400

    Update snappy to 1.1.10.1 and guava to 32.0.1-jre (opensearch-project#2886)

    * Update snappy to 1.1.10.1 and guava to 32.0.1-jre

    Signed-off-by: Craig Perkins <[email protected]>

    * Upgrade kafka to 3.5.0

    Signed-off-by: Craig Perkins <[email protected]>

    * Force snappy

    Signed-off-by: Craig Perkins <[email protected]>

    * Add runtime dependency on org.scala-lang.modules:scala-java8-compat_3:1.0.2 to fix issue with KafkaSinkTest

    Signed-off-by: Craig Perkins <[email protected]>

    ---------

    Signed-off-by: Craig Perkins <[email protected]>

commit c71d9b3
Author: Peter Nied <[email protected]>
Date:   Tue Jun 20 13:36:01 2023 -0500

    Adding field level security test cases for FlatFields (opensearch-project#2876)

    Signed-off-by: Peter Nied <[email protected]>

commit e3b4f8f
Author: Andrey Pleskach <[email protected]>
Date:   Mon Jun 19 16:18:28 2023 +0200

    Use boucycastle PEM reader instead of reg expression (opensearch-project#2864)

    Use BouncyCastle PEMReader instead of
    regular expression to read and parse private key pem files.

    Signed-off-by: Andrey Pleskach <[email protected]>

commit ef6224c
Author: Stephen Crawford <[email protected]>
Date:   Thu Jun 15 23:32:10 2023 -0400

    Format everything (opensearch-project#2866)

commit ef048a2
Author: Stephen Crawford <[email protected]>
Date:   Thu Jun 15 11:57:25 2023 -0400

    IntegrationTest spotless (opensearch-project#2863)

    Signed-off-by: Stephen Crawford <[email protected]>

commit b6bfb11
Author: Bhavana Ramaram <[email protected]>
Date:   Tue Jun 13 17:00:34 2023 -0700

    add search model group permission to ml_read_access role (opensearch-project#2855)

    * add search model group permission to ml_read_access role

    Signed-off-by: Bhavana Ramaram <[email protected]>

commit 26244e9
Merge: 56e77fe 1691ca7
Author: Craig Perkins <[email protected]>
Date:   Tue Jun 13 16:14:33 2023 -0400

    Merge branch 'format-feature-extensions-apply' into feature/extensions

commit 1691ca7
Merge: efcadd4 2e263b8
Author: Craig Perkins <[email protected]>
Date:   Tue Jun 13 16:05:59 2023 -0400

    Merge branch 'main' into format-feature-extensions-apply

commit efcadd4
Merge: 1a09a87 ceb5ad2
Author: Craig Perkins <[email protected]>
Date:   Fri Jun 9 10:16:02 2023 -0400

    Merge branch 'main' into format-feature-extensions-apply

commit 1a09a87
Author: Craig Perkins <[email protected]>
Date:   Fri Jun 9 09:57:42 2023 -0400

    Run spotlessApply

    Signed-off-by: Craig Perkins <[email protected]>

commit 01917ff
Author: Craig Perkins <[email protected]>
Date:   Fri Jun 9 09:55:09 2023 -0400

    Remove other spotless section

    Signed-off-by: Craig Perkins <[email protected]>

commit c83ad28
Author: Craig Perkins <[email protected]>
Date:   Fri Jun 9 09:53:35 2023 -0400

    Add formatting changes in feature/extensions

    Signed-off-by: Craig Perkins <[email protected]>

commit 56e77fe
Merge: fa0fcc3 33aebb9
Author: Ryan Liang <[email protected]>
Date:   Wed May 24 11:31:54 2023 -0700

    Merge branch 'main' into feature/extensions

commit fa0fcc3
Author: Ryan Liang <[email protected]>
Date:   Tue May 16 10:55:57 2023 -0700

    [Feature/Extension] Rename the term 'extension' into 'on_behalf_of' (opensearch-project#2774)

    Signed-off-by: Ryan Liang <[email protected]>

commit f1cee3b
Merge: 95f9c77 15860b6
Author: Ryan Liang <[email protected]>
Date:   Tue May 16 09:33:59 2023 -0700

    Merge branch 'main' into feature/extensions

commit 95f9c77
Author: Ryan Liang <[email protected]>
Date:   Thu May 11 11:50:12 2023 -0700

    [Security/Extension] Extension Authentication Backend (opensearch-project#2672)

    * Extension Authentication-backend

    Signed-off-by: Ryan Liang <[email protected]>

commit 8f02d8d
Merge: 9515181 9d758f9
Author: Ryan Liang <[email protected]>
Date:   Wed May 10 12:12:20 2023 -0700

    Merge branch 'main' into feature/extensions

commit 9515181
Author: Ryan Liang <[email protected]>
Date:   Wed May 10 09:51:26 2023 -0700

    Fix the conflicts

    Signed-off-by: Ryan Liang <[email protected]>

commit 06055c3
Merge: df75a37 f4def32
Author: Ryan Liang <[email protected]>
Date:   Wed May 10 09:34:05 2023 -0700

    merge main into security extension feature branch

commit df75a37
Author: MaciejMierzwa <[email protected]>
Date:   Tue May 2 15:44:04 2023 +0200

    Extensions config for JWT signing/encryption key (opensearch-project#2671)

    * Extensions config for JWT signing/encryption key

    Signed-off-by: Maciej Mierzwa <[email protected]>

commit d4e5f1f
Merge: 4da62c3 6997f97
Author: Ryan Liang <[email protected]>
Date:   Thu Apr 27 07:05:39 2023 -0700

    Merge branch 'main' into feature/extensions

commit 4da62c3
Merge: 73ab1fc 6ace852
Author: Craig Perkins <[email protected]>
Date:   Tue Apr 25 09:38:52 2023 -0400

    Merge branch 'main' into feature/extensions

commit 73ab1fc
Author: Ryan Liang <[email protected]>
Date:   Thu Apr 6 13:38:19 2023 -0700

    [Security/Extension] Role encryption/decryption (opensearch-project#2620)

    * Encryption/Decryption of `roles`

    Signed-off-by: Ryan Liang <[email protected]>

commit 1681823
Author: Ryan Liang <[email protected]>
Date:   Fri Mar 31 06:58:56 2023 -0700

    [Security/Extension] JWT Vendor for extensions (opensearch-project#2567)

    * JWT Vendor for extensions
    Signed-off-by: Ryan Liang <[email protected]>

Signed-off-by: Peter Nied <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants