aws-secretsmanager-rotate-invoke
match (effective permission)
{
"action": "secretsmanager:RotateSecret",
"resource_type": "AWS::SecretsManager::Secret"
}
where
the secret has RotationEnabled == true and a RotationLambdaARN (resolve via the secret's rotation_lambda_arn property)
emit
| source type | Identity |
|---|---|
| source | <principal> |
| target | <rotation Lambda function node (ServerlessFunction)> |
| permissions | secretsmanager:RotateSecret |
Narrative
{principal.name} can force rotation of {secret.name} (secretsmanager:RotateSecret), invoking its rotation function {function.name}.
Raw rule rules/explicit/aws-secretsmanager.yaml
id: aws-secretsmanager-rotate-invoke
emits: CanInvoke
applies_to:
- aws
match_effective_permission:
action: secretsmanager:RotateSecret
resource_type: AWS::SecretsManager::Secret
where:
- the secret has RotationEnabled == true and a RotationLambdaARN (resolve via the secret's rotation_lambda_arn
property)
emit:
source_type: Identity
source: <principal>
target: <rotation Lambda function node (ServerlessFunction)>
api_source: iam:SimulatePrincipalPolicy | policy evaluation
permissions:
- secretsmanager:RotateSecret
evidence_field: effective secretsmanager:RotateSecret on secret ARN + DescribeSecret.RotationLambdaARN
narrative: '{principal.name} can force rotation of {secret.name} (secretsmanager:RotateSecret), invoking
its rotation function {function.name}.'
note: Only emit when a rotation Lambda is actually configured (RotationLambdaARN present). RotateSecret
with no configured rotation function invokes nothing. This is the on-demand run path; the scheduled
rotation trigger already exists independently when RotationEnabled is true.