格式错误的策略文档策略中的语法错误



>新手到AWS。我正在尝试使用 putUserPolicy API 向 IAM 用户添加内联策略,如下所示。遇到格式错误的策略文档作为错误代码和策略中的语法错误作为错误消息

// Attaches the policy document to the IAM user userName in the account
async putUserPolicy(userName: string, roleArn: string) {
let userPolicyData: any = null;
try {
// creates the policy document
const policyDocumentForUser = this.createUserPolicyDocument(roleArn);
const trustPolicyParamsForUser = {
PolicyDocument: JSON.stringify(policyDocumentForUser),
PolicyName: 'userPolciy',
UserName: userName
};
// attaching the policy document to the IAM user
userPolicyData = await this.iam.putUserPolicy(trustPolicyParamsForUser).promise();
this.logger.info(`Successfully created user policy for '${userName}'`);
} catch (error) {
this.logger.error(`Unable to create user policy role`, error);
throw error;
}
}
private createUserPolicyDocument(roleArn: string) {
const policyDocument = {
'statement': [
{
'Action': 'sts:AssumeRole',
'Resource': roleArn,
'Effect': 'Allow'
}
]
};
this.logger.debug('policyDocument:', policyDocument);
return policyDocument;
}

也尝试将版本提供给策略,但观察到相同的错误。我一直在对代码库中的所有策略文档使用单引号。

添加参考文档:https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutUserPolicy.html

您可能遇到区分大小写的问题。Statement必须大写。

作为旁注:它考虑了避免内联策略的良好做法。您可以改为创建和附加托管策略。此外,根据 CIS AWS 基础基准,建议将 IAM 策略直接应用于组和角色,而不是用户。

这背后的理由是,随着用户数量的增加,在组或角色级别分配权限会降低访问管理的复杂性。降低访问管理复杂性反过来可能会减少主体无意中接收或保留过多特权的机会。

'statement' 应该是 'Statement',你也应该有 "Version": "2012-10-17" 与语句处于同一级别

相关内容

  • 没有找到相关文章

最新更新