View a markdown version of this page

How Parameter Store authorizes parameter retrieval - AWS Systems Manager

How Parameter Store authorizes parameter retrieval

Four Parameter Store operations can return a parameter value, and each one is authorized against its own IAM action. Three of them authorize against the parameters named in the request. GetParametersByPath is the exception: it authorizes against the path in the request rather than against the parameters it returns.

Operation IAM action authorized Resource authorized against
GetParameter ssm:GetParameter The requested parameter
GetParameters ssm:GetParameters Each requested parameter
GetParameterHistory ssm:GetParameterHistory The requested parameter
GetParametersByPath ssm:GetParametersByPath The path specified in the request, not the parameters returned

Two consequences of this model are important when you design restrictive policies.

Each action is authorized independently

Parameter Store authorizes each retrieval operation against its own IAM action. Denying ssm:GetParameter has no effect on calls to ssm:GetParameters, ssm:GetParametersByPath, or ssm:GetParameterHistory. To restrict access to a parameter value, deny every action that can return it.

Because all four action names begin with GetParameter, the wildcard pattern ssm:GetParameter* covers them in a single statement. For examples, see Denying permissions.

GetParametersByPath is authorized against the requested path

This means resource-level denies on an individual parameter don't limit what a path query returns. If you use parameter hierarchies to separate environments or application tiers, apply your controls to the paths themselves.

Important

Parameter Store authorizes the GetParametersByPath operation against the path that you specify in the request, not against each parameter that the operation returns. A principal who is allowed to call GetParametersByPath for the path /a receives every parameter under that path, including /a/b. This is true even if the same policy explicitly denies access to /a/b for other actions.

To prevent a parameter from being returned by GetParametersByPath, deny the ssm:GetParametersByPath action on every ancestor path that could include the parameter in its results. For example, to prevent /a/b from being returned, deny ssm:GetParametersByPath for both /a and /.

The same pattern applies to deletion. DeleteParameters is authorized against ssm:DeleteParameters, not against ssm:DeleteParameter. To prevent a principal from deleting a parameter, deny both actions.

Note

Parameter Store operations are recorded in AWS CloudTrail. If you want to review which operations have been used to retrieve a parameter in your account, see Auditing and logging Parameter Store activity.