2014-03-05 5 views
4

Amazon AWS에서 IAM 등록 사용자 (Windows)에게 맞춤형 AMI 기반 인스턴스를 시작한 다음 해당 컴퓨터를 연결하는 작은 API 기반 프로그램을 제공하고 싶습니다. 그것에. 쉬운데, 같은 사용자가 (다른 머신이나 같은 머신에서) 여전히 실행중인 상태에서 다른 인스턴스를 실행해야한다면, 두 번째 시도와 그 이후의 시도는 실패해야합니다. AMI는 여러 사용자간에 공유됩니다. 인스턴스는 사용자에게 고유합니다.AWS IAM 사용자가 ec2 인스턴스를 하나만 실행할 수 있도록 허용

필요에 따라 인스턴스를 시작해야하지만 더 이상 인스턴스를 허용 할 필요가 없으므로이 문제는 유사한 질문과 다릅니다. 목표는 라이센스가 부여 된 것 이상으로 응용 프로그램이 사용되는 것을 방지하는 것입니다.

이상적으로이를 탐지하고 방지하는 것이 안전하기 때문에 모든 것이 AWS 측에서 발생합니다.

클라이언트 측에서는 태그를 사용하여 사용자 이름으로 시작한 인스턴스에 태그를 지정하고 인스턴스를 시작하기 전에 태그를 검색하는 방법을 알 수 있습니다.

서버 측에서 IAM 정책 조건 또는 다른 방법을 사용하여이를 수행 할 수 있습니까?

답변

6

확실히. 다음은 간단한 예제입니다. 사용자가 "MyTag"키와 "MyTagValue"키가있는 ResourceTag가 있으면 명시 적으로 거부 한 것을 제외하고 모든 ec2 작업에 대한 액세스 권한을 부여했습니다.

거부 ​​조치 :

예 :

{ 
    "Statement": [ 
    { 
     "Action": [ 
     "ec2:PurchaseReservedInstancesOffering", 
     "ec2:RequestSpotInstances", 
     "ec2:RunInstances" 
     ], 
     "Effect": "Deny", 
     "Resource": "*", 
     "Condition": { 
     "StringLike": { 
      "ec2:ResourceTag/MyTag": "MyTagValue" 
     } 
     } 
    }, 
    { 
     "Action": "ec2:*", 
     "Effect": "Allow", 
     "Resource": "*" 
    } 
    ] 
} 

여기에 고해상도의 증거 IAM Policy Simulator에서 ULTS : 그 행동이 그 태그가 존재하지 않는을 허용

A screenshot of the IAM Policy Simulator, showing several denied actions.

는 EC2 행동 "Action": "ec2:*"는의를 위해서였다 수, 등, 또한

다른 값이다 예를 들어 전체 블록을 제거하거나 템플릿으로 사용하여 특정 EC2 집합 만 사용자에게 허용 할 수 있습니다.

+0

실제로이 기능을 사용하는 사람이 있습니까? 이 AWS 포럼 게시물 (https://forums.aws.amazon.com/message.jspa?messageID=610822#610860)에 따르면 2015 년 3 월 IAM 정책을 통해 인스턴스 수를 제한 할 수 없습니다. EC2 API를 사용하여이 접근법을 테스트했을 때 제대로 작동하지 않았습니다. – tfasz

관련 문제