@@ -3,7 +3,7 @@ import { Template } from '../../assertions';
33import * as iam from '../../aws-iam' ;
44import { ArnPrincipal , PolicyStatement } from '../../aws-iam' ;
55import { App , Arn , Aws , CfnOutput , Stack } from '../../core' ;
6- import { KMS_ALIAS_NAME_REF } from '../../cx-api' ;
6+ import { KMS_ALIAS_NAME_REF , KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL } from '../../cx-api' ;
77import { Alias } from '../lib/alias' ;
88import { IKey , Key } from '../lib/key' ;
99
@@ -215,6 +215,7 @@ test('imported alias by name - will throw an error when accessing the key', () =
215215
216216test ( 'imported alias by name - grantDecrypt applies kms:ResourceAliases condition' , ( ) => {
217217 const stack = new Stack ( ) ;
218+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
218219 const aliasName = 'alias/myAlias' ;
219220 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
220221 const user = new iam . User ( stack , 'User' ) ;
@@ -252,6 +253,7 @@ test('imported alias by name - grantDecrypt applies kms:ResourceAliases conditio
252253
253254test ( 'imported alias by name - grantEncrypt applies kms:ResourceAliases condition' , ( ) => {
254255 const stack = new Stack ( ) ;
256+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
255257 const aliasName = 'alias/myAlias' ;
256258 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
257259 const user = new iam . User ( stack , 'User' ) ;
@@ -289,6 +291,7 @@ test('imported alias by name - grantEncrypt applies kms:ResourceAliases conditio
289291
290292test ( 'imported alias by name - grantEncryptDecrypt applies kms:ResourceAliases condition' , ( ) => {
291293 const stack = new Stack ( ) ;
294+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
292295 const aliasName = 'alias/myAlias' ;
293296 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
294297 const user = new iam . User ( stack , 'User' ) ;
@@ -326,6 +329,7 @@ test('imported alias by name - grantEncryptDecrypt applies kms:ResourceAliases c
326329
327330test ( 'imported alias by name - grantSign applies kms:ResourceAliases condition' , ( ) => {
328331 const stack = new Stack ( ) ;
332+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
329333 const aliasName = 'alias/myAlias' ;
330334 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
331335 const user = new iam . User ( stack , 'User' ) ;
@@ -363,6 +367,7 @@ test('imported alias by name - grantSign applies kms:ResourceAliases condition',
363367
364368test ( 'imported alias by name - grantVerify applies kms:ResourceAliases condition' , ( ) => {
365369 const stack = new Stack ( ) ;
370+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
366371 const aliasName = 'alias/myAlias' ;
367372 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
368373 const user = new iam . User ( stack , 'User' ) ;
@@ -400,6 +405,7 @@ test('imported alias by name - grantVerify applies kms:ResourceAliases condition
400405
401406test ( 'imported alias by name - grantSignVerify applies kms:ResourceAliases condition' , ( ) => {
402407 const stack = new Stack ( ) ;
408+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
403409 const aliasName = 'alias/myAlias' ;
404410 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
405411 const user = new iam . User ( stack , 'User' ) ;
@@ -437,6 +443,7 @@ test('imported alias by name - grantSignVerify applies kms:ResourceAliases condi
437443
438444test ( 'imported alias by name - grantGenerateMac applies kms:ResourceAliases condition' , ( ) => {
439445 const stack = new Stack ( ) ;
446+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
440447 const aliasName = 'alias/myAlias' ;
441448 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
442449 const user = new iam . User ( stack , 'User' ) ;
@@ -474,6 +481,7 @@ test('imported alias by name - grantGenerateMac applies kms:ResourceAliases cond
474481
475482test ( 'imported alias by name - grantVerifyMac applies kms:ResourceAliases condition' , ( ) => {
476483 const stack = new Stack ( ) ;
484+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
477485 const aliasName = 'alias/myAlias' ;
478486 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
479487 const user = new iam . User ( stack , 'User' ) ;
@@ -511,6 +519,7 @@ test('imported alias by name - grantVerifyMac applies kms:ResourceAliases condit
511519
512520test ( 'imported alias by name - grant method applies kms:ResourceAliases condition' , ( ) => {
513521 const stack = new Stack ( ) ;
522+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , true ) ;
514523 const aliasName = 'alias/myAlias' ;
515524 const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
516525 const user = new iam . User ( stack , 'User' ) ;
@@ -546,6 +555,22 @@ test('imported alias by name - grant method applies kms:ResourceAliases conditio
546555 } ) ;
547556} ) ;
548557
558+ test ( 'imported alias by name - grant methods are no-op when feature flag disabled' , ( ) => {
559+ const stack = new Stack ( ) ;
560+ stack . node . setContext ( KMS_APPLY_IMPORTED_ALIAS_PERMISSIONS_TO_PRINCIPAL , false ) ;
561+ const aliasName = 'alias/myAlias' ;
562+ const myAlias = Alias . fromAliasName ( stack , 'MyAlias' , aliasName ) ;
563+ const user = new iam . User ( stack , 'User' ) ;
564+
565+ myAlias . grantDecrypt ( user ) ;
566+ myAlias . grantEncrypt ( user ) ;
567+ myAlias . grantSign ( user ) ;
568+ myAlias . grant ( user , 'kms:CreateGrant' ) ;
569+
570+ // should not create any IAM policy statements
571+ Template . fromStack ( stack ) . resourceCountIs ( 'AWS::IAM::Policy' , 0 ) ;
572+ } ) ;
573+
549574test ( 'fails if alias policy is invalid' , ( ) => {
550575 const app = new App ( ) ;
551576 const stack = new Stack ( app , 'my-stack' ) ;
0 commit comments