Skip to content

Commit 64c3801

Browse files
committed
Add MinioStsSetup createbucket + accessbucket policy.
1 parent 5aa88e0 commit 64c3801

File tree

3 files changed

+68
-33
lines changed

3 files changed

+68
-33
lines changed

admin-cli/src/main/java/cloud/katta/cli/commands/storage/MinioStsSetup.java

Lines changed: 41 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -51,33 +51,57 @@ public class MinioStsSetup implements Callable<Void> {
5151
@CommandLine.Option(names = {"--maxSessionDuration"}, description = "Bucket Prefix for STS vaults.", required = false)
5252
Integer maxSessionDuration;
5353

54+
@CommandLine.Option(names = {"--createbucketPolicyName"}, description = "Policy name for accessing Katta STS buckets. Defaults to {bucketPrefix}createbucketPolicy.")
55+
String createbucketPolicyName;
56+
57+
@CommandLine.Option(names = {"--accessbucketPolicyName"}, description = "Policy name for accessing Katta STS buckets. Defaults to {bucketPrefix}accessbucketpolicy.")
58+
String accessbucketPolicyName;
59+
5460
@Override
5561
public Void call() throws Exception {
56-
final String createbucketPolicyName = "cipherduckcreatebucket";
62+
if(createbucketPolicyName == null) {
63+
createbucketPolicyName = String.format("%screatebucketpolicy", bucketPrefix);
64+
}
65+
if(accessbucketPolicyName == null) {
66+
accessbucketPolicyName = String.format("%saccessbucketpolicy", bucketPrefix);
67+
}
5768

58-
final JSONObject miniocreatebucketpolicy = new JSONObject(IOUtils.toString(KattaSetupCli.class.getResourceAsStream("/setup/minio_sts/createbucketpolicy.json"), Charset.defaultCharset()));
5969
final MinioAdminClient minioAdminClient = new MinioAdminClient.Builder()
6070
.credentials(accessKey, secretKey)
6171
.endpoint(endpointUrl).build();
6272

63-
// /mc admin policy create myminio cipherduckcreatebucket /setup/minio_sts/createbucketpolicy.json
64-
final JSONArray statements = miniocreatebucketpolicy.getJSONArray("Statement");
65-
for(int i = 0; i < statements.length(); i++) {
66-
final List<String> list = statements.getJSONObject(i).getJSONArray("Resource").toList().stream().map(Objects::toString).map(s -> s.replace("katta", bucketPrefix)).toList();
67-
statements.getJSONObject(i).put("Resource", list);
73+
// /mc admin policy create myminio cipherduckcreatebucket /setup/minio_sts/createbucketpolicy.json
74+
{
75+
final JSONObject miniocreatebucketpolicy = new JSONObject(IOUtils.toString(KattaSetupCli.class.getResourceAsStream("/setup/minio_sts/createbucketpolicy.json"), Charset.defaultCharset()));
76+
final JSONArray statements = miniocreatebucketpolicy.getJSONArray("Statement");
77+
for(int i = 0; i < statements.length(); i++) {
78+
final List<String> list = statements.getJSONObject(i).getJSONArray("Resource").toList().stream().map(Objects::toString).map(s -> s.replace("katta", bucketPrefix)).toList();
79+
statements.getJSONObject(i).put("Resource", list);
80+
}
81+
minioAdminClient.addCannedPolicy(createbucketPolicyName, miniocreatebucketpolicy.toString());
82+
System.out.println(minioAdminClient.listCannedPolicies().get(createbucketPolicyName));
83+
}
84+
// /mc admin policy create myminio cipherduckaccessbucket /setup/minio_sts/accessbucketpolicy.json
85+
{
86+
final JSONObject minioaccessbucketpolicy = new JSONObject(IOUtils.toString(KattaSetupCli.class.getResourceAsStream("/setup/minio_sts/accessbucketpolicy.json"), Charset.defaultCharset()));
87+
final JSONArray statements = minioaccessbucketpolicy.getJSONArray("Statement");
88+
for(int i = 0; i < statements.length(); i++) {
89+
final List<String> list = statements.getJSONObject(i).getJSONArray("Resource").toList().stream().map(Objects::toString).map(s -> s.replace("katta", bucketPrefix)).toList();
90+
statements.getJSONObject(i).put("Resource", list);
91+
}
92+
minioAdminClient.addCannedPolicy(accessbucketPolicyName, minioaccessbucketpolicy.toString());
93+
System.out.println(minioAdminClient.listCannedPolicies().get(accessbucketPolicyName));
6894
}
69-
minioAdminClient.addCannedPolicy(createbucketPolicyName, miniocreatebucketpolicy.toString());
70-
System.out.println(minioAdminClient.listCannedPolicies().get(createbucketPolicyName));
7195

7296

73-
// /mc admin policy create myminio cipherduckaccessbucket /setup/minio_sts/accessbucketpolicy.json
74-
//
75-
//
76-
// /mc idp openid add myminio cryptomator \
77-
// config_url="${HUB_KEYCLOAK_URL}${HUB_KEYCLOAK_BASEPATH}/realms/${HUB_KEYCLOAK_REALM}/.well-known/openid-configuration" \
78-
// client_id="cryptomator" \
79-
// client_secret="ignore-me" \
80-
// role_policy="cipherduckcreatebucket"
97+
// /mc idp openid add myminio cryptomator \
98+
// config_url="${HUB_KEYCLOAK_URL}${HUB_KEYCLOAK_BASEPATH}/realms/${HUB_KEYCLOAK_REALM}/.well-known/openid-configuration" \
99+
// client_id="cryptomator" \
100+
// client_secret="ignore-me" \
101+
// role_policy="cipherduckcreatebucket"
102+
// {
103+
// minioClient.
104+
// }
81105
// /mc idp openid add myminio cryptomatorhub \
82106
// config_url="${HUB_KEYCLOAK_URL}${HUB_KEYCLOAK_BASEPATH}/realms/${HUB_KEYCLOAK_REALM}/.well-known/openid-configuration" \
83107
// client_id="cryptomatorhub" \

admin-cli/src/test/java/cloud/katta/cli/commands/storage/MinioStsSetupIT.java

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,17 @@
44

55
package cloud.katta.cli.commands.storage;
66

7-
import org.json.JSONArray;
8-
import org.json.JSONObject;
9-
import org.junit.jupiter.api.Test;
10-
11-
import java.util.Objects;
12-
137
import cloud.katta.cli.KattaSetupCli;
148
import cloud.katta.testcontainers.AbtractAdminCliIT;
159
import io.minio.admin.MinioAdminClient;
10+
import org.json.JSONArray;
11+
import org.json.JSONObject;
12+
import static org.junit.jupiter.api.Assertions.assertEquals;
13+
import org.junit.jupiter.api.Test;
1614
import picocli.CommandLine;
1715

18-
import static org.junit.jupiter.api.Assertions.assertEquals;
16+
import java.util.Map;
17+
import java.util.Objects;
1918

2019
class MinioStsSetupIT extends AbtractAdminCliIT {
2120

@@ -26,19 +25,32 @@ public void testStorageProfileAwsStsSetup() throws Exception {
2625
"--endpointUrl", "http://localhost:9100",
2726
"--accessKey", "minioadmin",
2827
"--secretKey", "minioadmin",
29-
"--bucketPrefix", "farfalle"
28+
"--bucketPrefix", "fusilli"
3029
);
3130
assertEquals(0, rc);
3231

3332
final MinioAdminClient minioAdminClient = new MinioAdminClient.Builder()
3433
.credentials("minioadmin", "minioadmin")
3534
.endpoint("http://localhost:9100").build();
36-
final JSONObject miniocreatebucketpolicy = new JSONObject(minioAdminClient.listCannedPolicies().get("cipherduckcreatebucket"));
37-
final JSONArray statements = miniocreatebucketpolicy.getJSONArray("Statement");
38-
int count = 0;
39-
for(int i = 0; i < statements.length(); i++) {
40-
count += statements.getJSONObject(i).getJSONArray("Resource").toList().stream().map(Objects::toString).map(s -> s.contains("farfalle")).count();
35+
36+
final Map<String, String> cannedPolicies = minioAdminClient.listCannedPolicies();
37+
{
38+
final JSONObject miniocreatebucketpolicy = new JSONObject(cannedPolicies.get("fusillicreatebucketpolicy"));
39+
final JSONArray statements = miniocreatebucketpolicy.getJSONArray("Statement");
40+
int count = 0;
41+
for (int i = 0; i < statements.length(); i++) {
42+
count += statements.getJSONObject(i).getJSONArray("Resource").toList().stream().map(Objects::toString).map(s -> s.contains("fusilli")).count();
43+
}
44+
assertEquals(3, count);
45+
}
46+
{
47+
final JSONObject minioaccessbucket = new JSONObject(cannedPolicies.get("fusilliaccessbucketpolicy"));
48+
final JSONArray statements = minioaccessbucket.getJSONArray("Statement");
49+
int count = 0;
50+
for (int i = 0; i < statements.length(); i++) {
51+
count += statements.getJSONObject(i).getJSONArray("Resource").toList().stream().map(Objects::toString).map(s -> s.contains("fusilli")).count();
52+
}
53+
assertEquals(2, count);
4154
}
42-
assertEquals(3, count);
4355
}
4456
}

admin-cli/src/test/java/cloud/katta/testcontainers/AbtractAdminCliIT.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import cloud.katta.protocols.hub.HubSession;
2424
import cloud.katta.testsetup.AbstractHubTest;
2525
import cloud.katta.testsetup.HubTestConfig;
26-
import cloud.katta.testsetup.HubTestSetupDockerExtension;
2726

2827
public class AbtractAdminCliIT extends AbstractHubTest {
2928
private static final Logger log = LogManager.getLogger(AbtractAdminCliIT.class.getName());
@@ -47,7 +46,7 @@ public static void setupDocker() throws URISyntaxException, IOException {
4746
env.put("HUB_ADMIN_PASSWORD", configuration.hubAdminPassword);
4847
env.put("HUB_KEYCLOAK_SYSTEM_CLIENT_SECRET", configuration.hubKeycloakSystemClientSecret);
4948
compose = new ComposeContainer(
50-
new File(HubTestSetupDockerExtension.class.getResource(configuration.composeFile).toURI()))
49+
new File(AbtractAdminCliIT.class.getResource(configuration.composeFile).toURI()))
5150
.withLocalCompose(true)
5251
.withPull(true)
5352
.withEnv(env)

0 commit comments

Comments
 (0)