2017-04-18 2 views
1

S3 버킷에 구름 모양 템플릿이 있습니다 (URL은 패턴을 따르지 만 정확히 일치하지는 않습니다 : https://s3.amazonaws.com/bucket-name/cloudform.yaml). bash 스크립트를 위해 CLI에서 액세스 할 수 있어야합니다. 조직의 모든 사람 (이 단일 계정의 모든 사용자)이이 템플릿에 액세스 할 수 있지만 조직 외부의 다른 사용자는 템플릿에 액세스 할 수없는 것이 좋습니다. 나는 내 사무실에서 몇 가지 다른 사람들이 URL을 액세스 할 수없는이 정책을S3 주요 버킷 정책 권한

{ 
"Version": "2012-10-17", 
"Id": "Policy11111111", 
"Statement": [ 
    { 
     "Sid": "Stmt111111111", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "arn:aws:iam::7777777777:root" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::bucket-name/*" 
    } 
] 
} 

:처럼 해봤 버킷 정책이 보인다. 루트 계정으로 로그인 할 때도 액세스가 거부됩니다. 또한

이 변경 (단지에 * 주요 설정은) 누구에게도 버킷에 액세스 할 수 있습니다 :

{ 
    "Version": "2012-10-17", 
    "Id": "Policy11111111", 
    "Statement": [ 
     { 
      "Sid": "Stmt111111111", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::bucket-name/*" 
     } 
    ] 
} 

가 분명히 표시가 잘못되는 내 주요 필드를 가리 킵니다. 777777777은 내 계정 페이지에 표시되는 계정 ID를 대체합니다.

그렇다면 IAM 앞에서 걱정할 필요가 있습니까? 루트 사용자로 로그인 한 것을 고려해 볼 때, 버킷 정책을 적용하는 한이 액세스 권한을 가져야한다고 생각합니다. 어떤 도움이라도 대단히 감사 할 것입니다.

답변

1

짧고 달콤한 : 버킷 정책이 때문에 주요 요소의 와일드 카드 제한 당신이 원하는 것을 할 수 없습니다

. 가장 좋은 방법은 IAM 그룹을 만들고 액세스가 필요한 경우 모든 IAM 사용자를 해당 그룹에 넣는 것입니다.

긴 버전 :

그냥, https://s3.amazonaws.com/bucket-name/cloudform.yaml에 대한 요청이 서명해야합니다 그것을 명확하게하고 필요한 인증 매개 변수를하거나 요청이 액세스 거부로 거부 될 것입니다. 유일한 예외는 버킷 정책 또는 버킷 ACL이 공개 액세스를 허용하지만 이것이 원하는 것처럼 들리지 않는 경우입니다.

"조직의 모든 사람 (이 단일 계정 모두)"이라고 말하면 AWS 콘솔에서 파일에 액세스하는 계정의 IAM 사용자 또는 다른 코드 또는 도구를 사용하는 IAM 사용자를 의미한다고 가정합니다 (예 : AWS CLI)를 사용하여 파일에 액세스하십시오.

은 그래서 당신이 원하는 같은 소리하면 해당 패턴은 777,777,777,777 계정 ID 아래의 모든 IAM 사용자에 대해 어떻게 될지 때문에

"Principal": { 
    "AWS": "arn:aws:iam::777777777777:user/*" 
} 

로 교장을 지정하는 기능입니다. 안타깝게도 catch-all 와일드 카드 "*"를 사용하지 않으면 주체에 와일드 카드가 허용되지 않으므로 허용되지 않습니다. 즉, "*"는 허용되지만 "접두어 *"또는 "* 접미사"는 허용되지 않습니다. (I는 AWS이 더 나은 문서화 바랍니다.)

당신은 당신과 같이 버킷 정책에있는 모든 IAM 사용자 지정할 수 있습니다 :

"Principal": { 
    "AWS": [ 
     "arn:aws:iam::777777777777:user/alice", 
     "arn:aws:iam::777777777777:user/bob", 
     "arn:aws:iam::777777777777:user/carl", 
     ... 
     "arn:aws:iam::777777777777:user/zed", 
} 

그러나 당신은 아마 모든 새 사용자에 대한 정책을 업데이트하지 않으을 .

해당 파일에 대한 액세스를 허용하는 IAM 그룹을 만드는 것이 가장 쉽습니다. 그런 다음 모든 IAM 사용자를 해당 그룹에 추가합니다. 새 사용자를 추가하는 경우 수동으로 해당 그룹에 추가해야하므로 원래 원하는만큼 편리하지 않습니다.