|
@@ -20,28 +20,28 @@ package org.apache.hadoop.crypto.key.kms.server;
|
|
import static org.apache.hadoop.crypto.key.kms.server.KMSConfiguration.*;
|
|
import static org.apache.hadoop.crypto.key.kms.server.KMSConfiguration.*;
|
|
import static org.apache.hadoop.crypto.key.kms.server.KeyAuthorizationKeyProvider.KEY_ACL;
|
|
import static org.apache.hadoop.crypto.key.kms.server.KeyAuthorizationKeyProvider.KEY_ACL;
|
|
import static org.apache.hadoop.crypto.key.kms.server.KeyAuthorizationKeyProvider.KeyOpType;
|
|
import static org.apache.hadoop.crypto.key.kms.server.KeyAuthorizationKeyProvider.KeyOpType;
|
|
|
|
+import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
|
+import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
|
|
+import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
|
|
+import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
|
|
|
|
import org.apache.hadoop.conf.Configuration;
|
|
import org.apache.hadoop.conf.Configuration;
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
import org.apache.hadoop.security.UserGroupInformation;
|
|
import org.apache.hadoop.security.authorize.AccessControlList;
|
|
import org.apache.hadoop.security.authorize.AccessControlList;
|
|
-import org.junit.Assert;
|
|
|
|
-import org.junit.Rule;
|
|
|
|
-import org.junit.rules.Timeout;
|
|
|
|
-import org.junit.Test;
|
|
|
|
|
|
+import org.junit.jupiter.api.Test;
|
|
|
|
+import org.junit.jupiter.api.Timeout;
|
|
|
|
|
|
import java.util.Collection;
|
|
import java.util.Collection;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.HashSet;
|
|
|
|
|
|
|
|
+@Timeout(180)
|
|
public class TestKMSACLs {
|
|
public class TestKMSACLs {
|
|
- @Rule
|
|
|
|
- public final Timeout globalTimeout = new Timeout(180000);
|
|
|
|
-
|
|
|
|
@Test
|
|
@Test
|
|
public void testDefaults() {
|
|
public void testDefaults() {
|
|
final KMSACLs acls = new KMSACLs(new Configuration(false));
|
|
final KMSACLs acls = new KMSACLs(new Configuration(false));
|
|
for (KMSACLs.Type type : KMSACLs.Type.values()) {
|
|
for (KMSACLs.Type type : KMSACLs.Type.values()) {
|
|
- Assert.assertTrue(acls.hasAccess(type,
|
|
|
|
|
|
+ assertTrue(acls.hasAccess(type,
|
|
UserGroupInformation.createRemoteUser("foo")));
|
|
UserGroupInformation.createRemoteUser("foo")));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -54,9 +54,9 @@ public class TestKMSACLs {
|
|
}
|
|
}
|
|
final KMSACLs acls = new KMSACLs(conf);
|
|
final KMSACLs acls = new KMSACLs(conf);
|
|
for (KMSACLs.Type type : KMSACLs.Type.values()) {
|
|
for (KMSACLs.Type type : KMSACLs.Type.values()) {
|
|
- Assert.assertTrue(acls.hasAccess(type,
|
|
|
|
|
|
+ assertTrue(acls.hasAccess(type,
|
|
UserGroupInformation.createRemoteUser(type.toString())));
|
|
UserGroupInformation.createRemoteUser(type.toString())));
|
|
- Assert.assertFalse(acls.hasAccess(type,
|
|
|
|
|
|
+ assertFalse(acls.hasAccess(type,
|
|
UserGroupInformation.createRemoteUser("foo")));
|
|
UserGroupInformation.createRemoteUser("foo")));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -72,16 +72,16 @@ public class TestKMSACLs {
|
|
conf.set(DEFAULT_KEY_ACL_PREFIX + "ALL", "invalid");
|
|
conf.set(DEFAULT_KEY_ACL_PREFIX + "ALL", "invalid");
|
|
conf.set(WHITELIST_KEY_ACL_PREFIX + "ALL", "invalid");
|
|
conf.set(WHITELIST_KEY_ACL_PREFIX + "ALL", "invalid");
|
|
final KMSACLs acls = new KMSACLs(conf);
|
|
final KMSACLs acls = new KMSACLs(conf);
|
|
- Assert.assertTrue("expected key ACL size is 2 but got "
|
|
|
|
- + acls.keyAcls.size(), acls.keyAcls.size() == 2);
|
|
|
|
- Assert.assertTrue("expected whitelist ACL size is 1 but got "
|
|
|
|
- + acls.whitelistKeyAcls.size(), acls.whitelistKeyAcls.size() == 1);
|
|
|
|
- Assert.assertFalse("ALL should not be allowed for whitelist ACLs.",
|
|
|
|
- acls.whitelistKeyAcls.containsKey(KeyOpType.ALL));
|
|
|
|
- Assert.assertTrue("expected default ACL size is 1 but got "
|
|
|
|
- + acls.defaultKeyAcls.size(), acls.defaultKeyAcls.size() == 1);
|
|
|
|
- Assert.assertTrue("ALL should not be allowed for default ACLs.",
|
|
|
|
- acls.defaultKeyAcls.size() == 1);
|
|
|
|
|
|
+ assertTrue(acls.keyAcls.size() == 2, "expected key ACL size is 2 but got "
|
|
|
|
+ + acls.keyAcls.size());
|
|
|
|
+ assertTrue(acls.whitelistKeyAcls.size() == 1, "expected whitelist ACL size is 1 but got "
|
|
|
|
+ + acls.whitelistKeyAcls.size());
|
|
|
|
+ assertFalse(acls.whitelistKeyAcls.containsKey(KeyOpType.ALL),
|
|
|
|
+ "ALL should not be allowed for whitelist ACLs.");
|
|
|
|
+ assertTrue(acls.defaultKeyAcls.size() == 1, "expected default ACL size is 1 but got "
|
|
|
|
+ + acls.defaultKeyAcls.size());
|
|
|
|
+ assertTrue(acls.defaultKeyAcls.size() == 1,
|
|
|
|
+ "ALL should not be allowed for default ACLs.");
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
@@ -98,15 +98,15 @@ public class TestKMSACLs {
|
|
conf.set(WHITELIST_KEY_ACL_PREFIX + "DECRYPT_EEK", "whitelist1");
|
|
conf.set(WHITELIST_KEY_ACL_PREFIX + "DECRYPT_EEK", "whitelist1");
|
|
conf.set(WHITELIST_KEY_ACL_PREFIX + "DECRYPT_EEK", "*");
|
|
conf.set(WHITELIST_KEY_ACL_PREFIX + "DECRYPT_EEK", "*");
|
|
final KMSACLs acls = new KMSACLs(conf);
|
|
final KMSACLs acls = new KMSACLs(conf);
|
|
- Assert.assertTrue("expected key ACL size is 2 but got "
|
|
|
|
- + acls.keyAcls.size(), acls.keyAcls.size() == 2);
|
|
|
|
|
|
+ assertTrue(acls.keyAcls.size() == 2, "expected key ACL size is 2 but got "
|
|
|
|
+ + acls.keyAcls.size());
|
|
assertKeyAcl("test_key_1", acls, KeyOpType.DECRYPT_EEK, "decrypt2");
|
|
assertKeyAcl("test_key_1", acls, KeyOpType.DECRYPT_EEK, "decrypt2");
|
|
assertKeyAcl("test_key_2", acls, KeyOpType.ALL, "all1", "all3");
|
|
assertKeyAcl("test_key_2", acls, KeyOpType.ALL, "all1", "all3");
|
|
assertDefaultKeyAcl(acls, KeyOpType.MANAGEMENT);
|
|
assertDefaultKeyAcl(acls, KeyOpType.MANAGEMENT);
|
|
assertDefaultKeyAcl(acls, KeyOpType.DECRYPT_EEK);
|
|
assertDefaultKeyAcl(acls, KeyOpType.DECRYPT_EEK);
|
|
AccessControlList acl = acls.whitelistKeyAcls.get(KeyOpType.DECRYPT_EEK);
|
|
AccessControlList acl = acls.whitelistKeyAcls.get(KeyOpType.DECRYPT_EEK);
|
|
- Assert.assertNotNull(acl);
|
|
|
|
- Assert.assertTrue(acl.isAllAllowed());
|
|
|
|
|
|
+ assertNotNull(acl);
|
|
|
|
+ assertTrue(acl.isAllAllowed());
|
|
}
|
|
}
|
|
|
|
|
|
@Test
|
|
@Test
|
|
@@ -163,8 +163,8 @@ public class TestKMSACLs {
|
|
conf.set(DEFAULT_KEY_ACL_PREFIX + "DECRYPT_EEK", "*");
|
|
conf.set(DEFAULT_KEY_ACL_PREFIX + "DECRYPT_EEK", "*");
|
|
acls.setKeyACLs(conf);
|
|
acls.setKeyACLs(conf);
|
|
AccessControlList acl = acls.defaultKeyAcls.get(KeyOpType.DECRYPT_EEK);
|
|
AccessControlList acl = acls.defaultKeyAcls.get(KeyOpType.DECRYPT_EEK);
|
|
- Assert.assertTrue(acl.isAllAllowed());
|
|
|
|
- Assert.assertTrue(acl.getUsers().isEmpty());
|
|
|
|
|
|
+ assertTrue(acl.isAllAllowed());
|
|
|
|
+ assertTrue(acl.getUsers().isEmpty());
|
|
// everything else should still be the same.
|
|
// everything else should still be the same.
|
|
assertDefaultKeyAcl(acls, KeyOpType.READ, "read2");
|
|
assertDefaultKeyAcl(acls, KeyOpType.READ, "read2");
|
|
assertDefaultKeyAcl(acls, KeyOpType.MANAGEMENT, "mgmt1", "mgmt2");
|
|
assertDefaultKeyAcl(acls, KeyOpType.MANAGEMENT, "mgmt1", "mgmt2");
|
|
@@ -181,10 +181,10 @@ public class TestKMSACLs {
|
|
conf.set(DEFAULT_KEY_ACL_PREFIX + "DECRYPT_EEK", "new");
|
|
conf.set(DEFAULT_KEY_ACL_PREFIX + "DECRYPT_EEK", "new");
|
|
acls.setKeyACLs(conf);
|
|
acls.setKeyACLs(conf);
|
|
assertDefaultKeyAcl(acls, KeyOpType.DECRYPT_EEK, "new");
|
|
assertDefaultKeyAcl(acls, KeyOpType.DECRYPT_EEK, "new");
|
|
- Assert.assertTrue(acls.keyAcls.isEmpty());
|
|
|
|
- Assert.assertTrue(acls.whitelistKeyAcls.isEmpty());
|
|
|
|
- Assert.assertEquals("Got unexpected sized acls:"
|
|
|
|
- + acls.defaultKeyAcls, 1, acls.defaultKeyAcls.size());
|
|
|
|
|
|
+ assertTrue(acls.keyAcls.isEmpty());
|
|
|
|
+ assertTrue(acls.whitelistKeyAcls.isEmpty());
|
|
|
|
+ assertEquals(1, acls.defaultKeyAcls.size(), "Got unexpected sized acls:"
|
|
|
|
+ + acls.defaultKeyAcls);
|
|
}
|
|
}
|
|
|
|
|
|
private void assertDefaultKeyAcl(final KMSACLs acls, final KeyOpType op,
|
|
private void assertDefaultKeyAcl(final KMSACLs acls, final KeyOpType op,
|
|
@@ -201,23 +201,22 @@ public class TestKMSACLs {
|
|
|
|
|
|
private void assertKeyAcl(final String keyName, final KMSACLs acls,
|
|
private void assertKeyAcl(final String keyName, final KMSACLs acls,
|
|
final KeyOpType op, final String... names) {
|
|
final KeyOpType op, final String... names) {
|
|
- Assert.assertTrue(acls.keyAcls.containsKey(keyName));
|
|
|
|
|
|
+ assertTrue(acls.keyAcls.containsKey(keyName));
|
|
final HashMap<KeyOpType, AccessControlList> keyacl =
|
|
final HashMap<KeyOpType, AccessControlList> keyacl =
|
|
acls.keyAcls.get(keyName);
|
|
acls.keyAcls.get(keyName);
|
|
- Assert.assertNotNull(keyacl.get(op));
|
|
|
|
|
|
+ assertNotNull(keyacl.get(op));
|
|
assertAcl(keyacl.get(op), op, names);
|
|
assertAcl(keyacl.get(op), op, names);
|
|
}
|
|
}
|
|
|
|
|
|
private void assertAcl(final AccessControlList acl,
|
|
private void assertAcl(final AccessControlList acl,
|
|
final KeyOpType op, final String... names) {
|
|
final KeyOpType op, final String... names) {
|
|
- Assert.assertNotNull(acl);
|
|
|
|
- Assert.assertFalse(acl.isAllAllowed());
|
|
|
|
|
|
+ assertNotNull(acl);
|
|
|
|
+ assertFalse(acl.isAllAllowed());
|
|
final Collection<String> actual = acl.getUsers();
|
|
final Collection<String> actual = acl.getUsers();
|
|
final HashSet<String> expected = new HashSet<>();
|
|
final HashSet<String> expected = new HashSet<>();
|
|
for (String name : names) {
|
|
for (String name : names) {
|
|
expected.add(name);
|
|
expected.add(name);
|
|
}
|
|
}
|
|
- Assert.assertEquals("defaultKeyAcls don't match for op:" + op,
|
|
|
|
- expected, actual);
|
|
|
|
|
|
+ assertEquals(expected, actual, "defaultKeyAcls don't match for op:" + op);
|
|
}
|
|
}
|
|
}
|
|
}
|