@@ -312,6 +312,15 @@ func pkiSecretBackendRoleResource() *schema.Resource {
312312 Description : "Specifies the duration by which to backdate the NotBefore property." ,
313313 ValidateFunc : validateDuration ,
314314 },
315+ "allowed_serial_numbers" : {
316+ Type : schema .TypeList ,
317+ Required : false ,
318+ Optional : true ,
319+ Description : "Defines allowed Subject serial numbers." ,
320+ Elem : & schema.Schema {
321+ Type : schema .TypeString ,
322+ },
323+ },
315324 },
316325 }
317326}
@@ -350,6 +359,12 @@ func pkiSecretBackendRoleCreate(d *schema.ResourceData, meta interface{}) error
350359 policyIdentifiers = append (policyIdentifiers , iIdentifier .(string ))
351360 }
352361
362+ iAllowedSerialNumbers := d .Get ("allowed_serial_numbers" ).([]interface {})
363+ allowedSerialNumbers := make ([]string , 0 , len (iAllowedSerialNumbers ))
364+ for _ , iSerialNumber := range iAllowedSerialNumbers {
365+ allowedSerialNumbers = append (allowedSerialNumbers , iSerialNumber .(string ))
366+ }
367+
353368 data := map [string ]interface {}{
354369 "ttl" : d .Get ("ttl" ),
355370 "max_ttl" : d .Get ("max_ttl" ),
@@ -401,6 +416,10 @@ func pkiSecretBackendRoleCreate(d *schema.ResourceData, meta interface{}) error
401416 data ["policy_identifiers" ] = policyIdentifiers
402417 }
403418
419+ if len (allowedSerialNumbers ) > 0 {
420+ data ["allowed_serial_numbers" ] = allowedSerialNumbers
421+ }
422+
404423 log .Printf ("[DEBUG] Creating role %s on PKI secret backend %q" , name , backend )
405424 _ , err := client .Logical ().Write (path , data )
406425 if err != nil {
@@ -473,6 +492,12 @@ func pkiSecretBackendRoleRead(d *schema.ResourceData, meta interface{}) error {
473492
474493 notBeforeDuration := flattenVaultDuration (secret .Data ["not_before_duration" ])
475494
495+ iAllowedSerialNumbers := secret .Data ["allowed_serial_numbers" ].([]interface {})
496+ allowedSerialNumbers := make ([]string , 0 , len (iAllowedSerialNumbers ))
497+ for _ , iSerialNumber := range iAllowedSerialNumbers {
498+ allowedSerialNumbers = append (allowedSerialNumbers , iSerialNumber .(string ))
499+ }
500+
476501 d .Set ("backend" , backend )
477502 d .Set ("name" , name )
478503 d .Set ("ttl" , secret .Data ["ttl" ])
@@ -511,6 +536,7 @@ func pkiSecretBackendRoleRead(d *schema.ResourceData, meta interface{}) error {
511536 d .Set ("policy_identifiers" , policyIdentifiers )
512537 d .Set ("basic_constraints_valid_for_non_ca" , secret .Data ["basic_constraints_valid_for_non_ca" ])
513538 d .Set ("not_before_duration" , notBeforeDuration )
539+ d .Set ("allowed_serial_numbers" , allowedSerialNumbers )
514540
515541 return nil
516542}
@@ -545,6 +571,12 @@ func pkiSecretBackendRoleUpdate(d *schema.ResourceData, meta interface{}) error
545571 policyIdentifiers = append (policyIdentifiers , iIdentifier .(string ))
546572 }
547573
574+ iAllowedSerialNumbers := d .Get ("allowed_serial_numbers" ).([]interface {})
575+ allowedSerialNumbers := make ([]string , 0 , len (iAllowedSerialNumbers ))
576+ for _ , iSerialNumber := range iAllowedSerialNumbers {
577+ allowedSerialNumbers = append (allowedSerialNumbers , iSerialNumber .(string ))
578+ }
579+
548580 data := map [string ]interface {}{
549581 "ttl" : d .Get ("ttl" ),
550582 "max_ttl" : d .Get ("max_ttl" ),
@@ -596,6 +628,10 @@ func pkiSecretBackendRoleUpdate(d *schema.ResourceData, meta interface{}) error
596628 data ["policy_identifiers" ] = policyIdentifiers
597629 }
598630
631+ if len (allowedSerialNumbers ) > 0 {
632+ data ["allowed_serial_numbers" ] = allowedSerialNumbers
633+ }
634+
599635 _ , err := client .Logical ().Write (path , data )
600636 if err != nil {
601637 return fmt .Errorf ("error updating PKI secret backend role %q: %s" , path , err )
0 commit comments