2016-12-26 7 views
3

STSのassume roleメソッドを呼び出しているときにエラーが発生します。ユーザーはxxxsts:AsumeRoleを実行する権限がありません。AWS STS AssumeRoleへのアクセスを有効にする方法

私は次のことをやった:

  1. 私はS3バケットにアクセスするための役割を作成しました。
  2. 私はポリシーシミュレータを超えるテストを実行し、私は新しいグループを作成し、その中に、私は は、すべてのリソースをすべてのSTSアクションを、可能にする新しいポリシーを作成し
  3. 正常に動作します。
  4. ポリシーシミュレータでsts assum roleにテストを実行し、 をステップ1で作成したロールのARNに指定しました。そしてそれは私が新しいユーザーを作成し、新しいユーザーの資格情報を使用して、ステップ3
  5. で作成したグループに入れて、私はSTS asume役割を使用して新しい資格情報 を取得しようとするが、私投げる
  6. 正常に動作します私のユーザーがそうでないと言っているエラー st:AssumeRole

私は間違って何をしていますか?作成した役割に設定された信頼relantionship:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "some-large-id", 
      "Effect": "Allow", 
      "Action": [ 
       "sts:*" 
      ], 
      "Resource": [ 
       "*" 
      ] 
     } 
    ] 
} 

政策的な役割で、グループ内

ポリシーは

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "another-large-id", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::my-bucket-name/*" 
      ] 
     } 
    ] 
} 

そして最後には、行方不明になった段階であり、この

let policy = { 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "new-custom-id", 
      "Effect": "Allow", 
      "Action": ["s3:PutObject"], 
      "Resource": ["arn:aws:s3:::my-bucket-name/*"] 
     } 
    ] 
}; 

let params = { 
    DurationSeconds: 3600, 
    ExternalId: 'some-value', 
    Policy: JSON.stringify(policy), 
    RoleArn: "arn:aws:iam::NUMBER:role/ROLE-NAME", //Cheked, role is the same that step one 
    RoleSessionName: this.makeNewSessionId() 
}; 
let sts = new AWS.STS({ apiVersion: '2012-08-10' }); 

sts.assumeRole(params, (err, data) => { 
    if(err) console.log(err); 
    else console.log(data); 
}); 

答えて

4

のように呼び出しますステップ1でユーザーがどのような権限を持っていても、信頼関係が設定されていない場合、STSは要求を拒否します。

Troubleshooting IAM Rolesどのように動作するかを説明します。

+0

ああ、神様ありがとうございました。 – mikejones1477

+0

これは私を助けました。プリンシパル内で値を設定する方法を指定します。 http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html –

関連する問題