2013-09-06 2 views
1

AWS IAM을 사용하여 모바일 앱의 임시 토큰을 생성하려고합니다. AWS C# SDK를 사용하고 있습니다.간단한 DB 정책이 무시됩니까?

여기 내 코드의 ...

토큰 생성 서비스

public string GetIAMKey(string deviceId) 
    { 
     //fetch IAM key... 

     var credentials = new BasicAWSCredentials("MyKey", "MyAccessId"); 

     var sts = new AmazonSecurityTokenServiceClient(credentials); 

     var tokenRequest = new GetFederationTokenRequest(); 
     tokenRequest.Name = deviceId; 
     tokenRequest.Policy = File.ReadAllText(HostingEnvironment.MapPath("~/policy.txt")); 
     tokenRequest.DurationSeconds = 129600; 

     var tokenResult = sts.GetFederationToken(tokenRequest); 

     var details = new IAMDetails { SessionToken = tokenResult.GetFederationTokenResult.Credentials.SessionToken, AccessKeyId = tokenResult.GetFederationTokenResult.Credentials.AccessKeyId, SecretAccessKey = tokenResult.GetFederationTokenResult.Credentials.SecretAccessKey, }; 

     return JsonConvert.SerializeObject(details); 
    } 

클라이언트

var iamkey = Storage.LoadPersistent<IAMDetails>("iamkey"); 

     var simpleDBClient = new AmazonSimpleDBClient(iamkey.AccessKeyId, iamkey.SecretAccessKey, iamkey.SessionToken); 

     try 
     { 
      var details = await simpleDBClient.SelectAsync(new SelectRequest { SelectExpression = "select * from mydomain" }); 

      return null; 
     } 
     catch (Exception ex) 
     { 
      Storage.ClearPersistent("iamkey"); 
     } 

정책 파일의 내용

{ "명령문": "허용", "조치": "sdb : *", "자원": "arn : aws : sdb : eu-west-1 : * : 도메인/사용자 도메인 * "}]}

나는 다음과 같은 오류가 ...

사용자 (: AWS : STS :: myaccountid : ARN을 연합 사용자/654321)을 계속 수행 할 수있는 권한이 없습니다 (sdb : 선택) 리소스 (arn : aws : sdb : us-east-1 : myaccountid : domain/mydomain)

내 정책 f ILE은 분명히 두 가지

를 지정
  1. 지역이어야한다 유럽 연합 (EU) - 서 - 1
  2. 허용 조치가 즉, 모든

그러나 예외 던진 주장을 허용하는 와일드 카드입니다 내 사용자는 미국 동부-1

에 권한이 없습니다 나는 왜이 오류가 발생하는지에 대한 아이디어를 가지고 있습니까?

답변

1

알아 냈습니다.

클라이언트에서 서비스를 호출 할 때 지역 끝점을 설정해야합니다.

그래서

var simpleDBClient = new AmazonSimpleDBClient(iamkey.AccessKeyId, iamkey.SecretAccessKey, iamkey.SessionToken, Amazon.RegionEndpoint.EUWest1); 
관련 문제