Skip to content

Commit 5115b68

Browse files
vinay-gopalanGeoff Childs
authored andcommitted
Add allowed_serial_numbers support (Forked hashicorp#1119) (hashicorp#1441)
Co-authored-by: Geoff Childs <geoff.childs@adalpha.io>
1 parent 8374042 commit 5115b68

3 files changed

Lines changed: 42 additions & 0 deletions

File tree

vault/resource_pki_secret_backend_role.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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)

vault/resource_pki_secret_backend_role_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ func TestPkiSecretBackendRole_basic(t *testing.T) {
6767
resource.TestCheckResourceAttr("vault_pki_secret_backend_role.test", "policy_identifiers.0", "1.2.3.4"),
6868
resource.TestCheckResourceAttr("vault_pki_secret_backend_role.test", "basic_constraints_valid_for_non_ca", "false"),
6969
resource.TestCheckResourceAttr("vault_pki_secret_backend_role.test", "not_before_duration", "45m"),
70+
resource.TestCheckResourceAttr("vault_pki_secret_backend_role.test", "allowed_serial_numbers.0", "*"),
7071
),
7172
},
7273
{
@@ -116,6 +117,7 @@ func TestPkiSecretBackendRole_basic(t *testing.T) {
116117
resource.TestCheckResourceAttr("vault_pki_secret_backend_role.test", "policy_identifiers.0", "1.2.3.4"),
117118
resource.TestCheckResourceAttr("vault_pki_secret_backend_role.test", "basic_constraints_valid_for_non_ca", "false"),
118119
resource.TestCheckResourceAttr("vault_pki_secret_backend_role.test", "not_before_duration", "45m"),
120+
resource.TestCheckResourceAttr("vault_pki_secret_backend_role.test", "allowed_serial_numbers.0", "*"),
119121
),
120122
},
121123
},
@@ -168,6 +170,7 @@ resource "vault_pki_secret_backend_role" "test" {
168170
policy_identifiers = ["1.2.3.4"]
169171
basic_constraints_valid_for_non_ca = false
170172
not_before_duration = "45m"
173+
allowed_serial_numbers = ["*"]
171174
}`, path, name)
172175
}
173176

@@ -218,6 +221,7 @@ resource "vault_pki_secret_backend_role" "test" {
218221
policy_identifiers = ["1.2.3.4"]
219222
basic_constraints_valid_for_non_ca = false
220223
not_before_duration = "45m"
224+
allowed_serial_numbers = ["*"]
221225
}`, path, name)
222226
}
223227

website/docs/r/pki_secret_backend_role.html.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ The following arguments are supported:
113113

114114
* `not_before_duration` - (Optional) Specifies the duration by which to backdate the NotBefore property.
115115

116+
* `allowed_serial_numbers` - (Optional) An array of allowed serial numbers to put in Subject
117+
116118
## Attributes Reference
117119

118120
No additional attributes are exported by this resource.

0 commit comments

Comments
 (0)