28
28
import com .google .api .services .cloudkms .v1beta1 .model .KeyRing ;
29
29
import com .google .api .services .cloudkms .v1beta1 .model .ListCryptoKeyVersionsResponse ;
30
30
import com .google .api .services .cloudkms .v1beta1 .model .ListCryptoKeysResponse ;
31
+ import com .google .api .services .cloudkms .v1beta1 .model .ListKeyRingsResponse ;
31
32
import com .google .api .services .cloudkms .v1beta1 .model .Policy ;
32
33
import com .google .api .services .cloudkms .v1beta1 .model .SetIamPolicyRequest ;
33
34
@@ -114,6 +115,30 @@ public static CryptoKey createCryptoKey(String projectId, String ringId, String
114
115
return createdKey ;
115
116
}
116
117
118
+ /**
119
+ * Creates a new crypto key version for the given id.
120
+ */
121
+ public static void createCryptoKeyVersion (
122
+ String projectId , String ringId , String keyId ) throws IOException {
123
+ String location = "global" ;
124
+ // Create the Cloud KMS client.
125
+ CloudKMS kms = createAuthorizedClient ();
126
+
127
+ // The resource name of the cryptoKey
128
+ String cryptoKeys = String .format (
129
+ "projects/%s/locations/%s/keyRings/%s/cryptoKeys/%s" ,
130
+ projectId , location , ringId , keyId );
131
+
132
+ CryptoKeyVersion version = new CryptoKeyVersion ();
133
+
134
+ CryptoKeyVersion newVersion = kms .projects ().locations ().keyRings ().cryptoKeys ()
135
+ .cryptoKeyVersions ()
136
+ .create (cryptoKeys , version )
137
+ .execute ();
138
+
139
+ System .out .println (newVersion );
140
+ }
141
+
117
142
/**
118
143
* Disables the given version of the crypto key.
119
144
*/
@@ -263,11 +288,12 @@ public static Policy addMemberToCryptoKeyPolicy(
263
288
iamPolicy .setBindings (bindings );
264
289
265
290
// Set the new IAM Policy.
266
- Policy newIamPolicy = kms .projects ().locations ().keyRings ().cryptoKeys ()
291
+ Policy newIamPolicy = kms .projects ().locations ().keyRings ()
292
+ .cryptoKeys ()
267
293
.setIamPolicy (cryptoKey , new SetIamPolicyRequest ().setPolicy (iamPolicy ))
268
294
.execute ();
269
295
270
- System .out .println (newIamPolicy );
296
+ System .out .println ("Response: " + newIamPolicy );
271
297
return newIamPolicy ;
272
298
}
273
299
@@ -320,11 +346,12 @@ public static Policy addMemberToKeyRingPolicy(
320
346
iamPolicy .setBindings (bindings );
321
347
322
348
// Set the new IAM Policy.
323
- Policy newIamPolicy = kms .projects ().locations ().keyRings ()
349
+ Policy newIamPolicy = kms .projects ().locations ()
350
+ .keyRings ()
324
351
.setIamPolicy (keyring , new SetIamPolicyRequest ().setPolicy (iamPolicy ))
325
352
.execute ();
326
353
327
- System .out .println (newIamPolicy );
354
+ System .out .println ("Response: " + newIamPolicy );
328
355
return newIamPolicy ;
329
356
}
330
357
@@ -346,21 +373,21 @@ public static Policy removeMemberFromCryptoKeyPolicy(
346
373
// Get the current IAM policy and add the new account to it.
347
374
Policy iamPolicy = getCryptoKeyPolicy (projectId , ringId , keyId );
348
375
349
- List <Binding > bindings = iamPolicy .getBindings ();
350
376
// Filter out the given member
351
- for (Binding b : bindings ) {
377
+ for (Binding b : iamPolicy . getBindings () ) {
352
378
if (role .equals (b .getRole ()) && b .getMembers ().contains (member )) {
353
- b .getMembers ().remove ( member );
379
+ b .getMembers ().removeAll ( Collections . singletonList ( member ) );
354
380
break ;
355
381
}
356
382
}
357
383
358
384
// Set the new IAM Policy.
359
- Policy newIamPolicy = kms .projects ().locations ().keyRings ().cryptoKeys ()
385
+ Policy newIamPolicy = kms .projects ().locations ().keyRings ()
386
+ .cryptoKeys ()
360
387
.setIamPolicy (cryptoKey , new SetIamPolicyRequest ().setPolicy (iamPolicy ))
361
388
.execute ();
362
389
363
- System .out .println (newIamPolicy );
390
+ System .out .println ("Response: " + newIamPolicy );
364
391
return newIamPolicy ;
365
392
}
366
393
@@ -382,24 +409,54 @@ public static Policy removeMemberFromKeyRingPolicy(
382
409
// Get the current IAM policy and add the new account to it.
383
410
Policy iamPolicy = getKeyRingPolicy (projectId , ringId );
384
411
385
- List <Binding > bindings = iamPolicy .getBindings ();
386
412
// Filter out the given member
387
- for (Binding b : bindings ) {
413
+ for (Binding b : iamPolicy . getBindings () ) {
388
414
if (role .equals (b .getRole ()) && b .getMembers ().contains (member )) {
389
415
b .getMembers ().remove (member );
390
416
break ;
391
417
}
392
418
}
393
419
394
420
// Set the new IAM Policy.
395
- Policy newIamPolicy = kms .projects ().locations ().keyRings ().cryptoKeys ()
421
+ Policy newIamPolicy = kms .projects ().locations ()
422
+ .keyRings ()
396
423
.setIamPolicy (cryptoKey , new SetIamPolicyRequest ().setPolicy (iamPolicy ))
397
424
.execute ();
398
425
399
- System .out .println (newIamPolicy );
426
+ System .out .println ("Response: " + newIamPolicy );
400
427
return newIamPolicy ;
401
428
}
402
429
430
+ /**
431
+ * Prints all the keyrings in the given project.
432
+ */
433
+ public static void listKeyRings (String projectId ) throws IOException {
434
+ String location = "global" ;
435
+ // Create the Cloud KMS client.
436
+ CloudKMS kms = createAuthorizedClient ();
437
+
438
+ // The resource name of the cryptoKey
439
+ String keyRingPath = String .format (
440
+ "projects/%s/locations/%s" ,
441
+ projectId , location );
442
+
443
+ // Make the RPC call
444
+ ListKeyRingsResponse response = kms .projects ().locations ()
445
+ .keyRings ()
446
+ .list (keyRingPath )
447
+ .execute ();
448
+
449
+ // Print the returned key rings
450
+ if (null != response .getKeyRings ()) {
451
+ System .out .println ("Key Rings: " );
452
+ for (KeyRing keyRing : response .getKeyRings ()) {
453
+ System .out .println (keyRing .getName ());
454
+ }
455
+ } else {
456
+ System .out .println ("No keyrings defined." );
457
+ }
458
+ }
459
+
403
460
/**
404
461
* Prints all the keys in the given key ring.
405
462
*/
0 commit comments