

# Parameter Store 如何授权参数检索
<a name="ps-retrieval-authorization"></a>

四个 Parameter Store 操作可返回参数值，而每个操作均针对其自身的 IAM 操作进行授权。其中三个操作针对请求中指定的参数进行授权。`GetParametersByPath` 则有所不同：它针对请求中的路径进行授权，而非针对其返回的参数进行授权。



| 操作 | 授权 IAM 操作 | 授权资源对象 | 
| --- | --- | --- | 
| [GetParameter](https://docs.amazonaws.cn/systems-manager/latest/APIReference/API_GetParameter.html) | ssm:GetParameter | 请求的参数 | 
| [GetParameters](https://docs.amazonaws.cn/systems-manager/latest/APIReference/API_GetParameters.html) | ssm:GetParameters | 每个请求的参数 | 
| [GetParameterHistory](https://docs.amazonaws.cn/systems-manager/latest/APIReference/API_GetParameterHistory.html) | ssm:GetParameterHistory | 请求的参数 | 
| [GetParametersByPath](https://docs.amazonaws.cn/systems-manager/latest/APIReference/API_GetParametersByPath.html) | ssm:GetParametersByPath | 请求中指定的路径，而非返回的参数 | 

在设计限制性策略时，此模型有两个需要注意的重要影响。

**每个操作均为独立授权**  
Parameter Store 针对其自身的 IAM 操作对每个检索操作进行独立授权。拒绝 `ssm:GetParameter` 对调用 `ssm:GetParameters`、`ssm:GetParametersByPath` 或 `ssm:GetParameterHistory` 没有任何影响。如需限制对参数值的访问，请拒绝所有可返回该参数值的操作。

由于四个操作名称全部都以 `GetParameter` 开头，通配符模式 `ssm:GetParameter*` 可在单个语句中涵盖全部操作。有关示例，请参阅 [拒绝权限](parameter-store-setting-up.md#sysman-paramstore-deny-permissions)。

**`GetParametersByPath` 根据请求的路径获得授权**  
这意味着针对单个参数的资源级拒绝不会限制路径查询所返回的内容。如果使用参数层次结构来隔离环境或应用层，请将控制措施应用于路径本身。

**重要**  
Parameter Store 会根据您在请求中指定的路径对 `GetParametersByPath` 操作进行授权，而不是针对操作返回的每个参数进行授权。被允许针对路径 `/a` 调用 `GetParametersByPath` 的主体将收到该路径下的所有参数，包括 `/a/b`。即使同一策略显式拒绝其他操作对 `/a/b` 的访问权限，上述情况依然成立。  
如需防止 `GetParametersByPath` 返回某个参数，请对可能在其结果中包含该参数的每个祖先路径拒绝 `ssm:GetParametersByPath` 操作。例如，要防止返回 `/a/b`，应同时拒绝 `/a` 和 `/` 的 `ssm:GetParametersByPath`。

同样的模式也适用于删除操作。[DeleteParameters](https://docs.amazonaws.cn/systems-manager/latest/APIReference/API_DeleteParameters.html) 针对 `ssm:DeleteParameters` 获得授权，而不是 `ssm:DeleteParameter`。如需阻止主体删除参数，请同时拒绝这两个操作。

**注意**  
Parameter Store 操作记录在 Amazon CloudTrail 中。如果想查看账户中用于检索参数的操作，请参阅[审计和记录 Parameter Store 活动](parameter-store-logging-auditing.md)。