SecretConfig¶
Bases: BaseModel, NameValidationMixin
Configuration model for AWS Secrets Manager secret creation.
Defines the structure and validation rules for creating secrets, with special handling for database secrets that require specific keys.
This model supports both database secrets (with predefined key structures) and general-purpose secrets with custom key-value pairs. Database secrets automatically follow AWS RDS integration patterns, while general secrets allow flexible data storage.
Attributes:
| Name | Type | Description |
|---|---|---|
is_db_secret |
bool
|
Flag indicating if this is a database credential secret |
is_shareable |
bool
|
Enable cross-account secret sharing for multi-environment access |
secret_data |
Dict[str, Union[str, bool]]
|
Key-value pairs containing the actual secret information |
secret_base_name |
str
|
Base identifier for the secret following naming conventions |
Source code in mare_aws_common_lib/models/secret_config.py
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | |
check_keys()
¶
Validate secret data keys and set defaults for database secrets.
For database secrets, ensures required keys are present, sets defaults for optional keys, validates boolean string values, and ensures no forbidden keys are included.
Returns:
| Type | Description |
|---|---|
SecretConfig
|
Self after validation |
Raises:
| Type | Description |
|---|---|
ValueError
|
If required DB keys are missing, forbidden keys are present, or boolean values are invalid |
Source code in mare_aws_common_lib/models/secret_config.py
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | |
validate_and_normalize_iam_role()
¶
Validate and normalize the IAM role setting for database secrets.
Converts string "true"/"false" values to boolean and sets default to False if missing. Only applies to database secrets.
Returns:
| Type | Description |
|---|---|
SecretConfig
|
Self with normalized secret_data |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the IAM role value is invalid |
Source code in mare_aws_common_lib/models/secret_config.py
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | |
validate_secret_name(value)
classmethod
¶
Validate the secret base name.
Applies validation rules to secret naming to ensure the name meets AWS requirements and organizational standards.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
value
|
str
|
Raw secret base name from configuration |
required |
Returns:
| Type | Description |
|---|---|
str
|
Validated secret base name |
Raises:
| Type | Description |
|---|---|
ValueError
|
If the secret name fails validation rules |
Source code in mare_aws_common_lib/models/secret_config.py
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | |
validate_snc_key_dependencies()
¶
Validate SNC key configuration dependencies.
Ensures that snc_key_from_foundation can only be True when use_snc_key is also True, maintaining logical consistency in SNC key usage configuration. Foundation-provided SNC keys require the general SNC key usage to be enabled.
Returns:
| Type | Description |
|---|---|
SecretConfig
|
Self after validation |
Raises:
| Type | Description |
|---|---|
ValueError
|
If snc_key_from_foundation is True while use_snc_key is False |
Source code in mare_aws_common_lib/models/secret_config.py
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | |
Example
from mare_aws_common_lib.models import SecretConfig
config = SecretConfig(
secret_base_name="my-app-db",
is_db_secret=True,
is_shareable=False,
secret_data={
"db_username": "admin",
"db_app_username": "app_user"
}
)