기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Elastic Container Service ID 기반 정책 예제
기본적으로 IAM 사용자 및 역할에는 생성 또는 수정할 권한이 없습니다. Amazon ECS 리소스. 또한, AWS Management 콘솔, AWS CLI, 또는 AWS API. 안 IAM 관리자가 생성해야 함 IAM 사용자 및 역할을 부여하는 정책 필요한 특정 리소스에 대해 특정 API 작업을 수행할 수 있는 권한을 제공합니다. 더 그런 다음 관리자는 해당 정책을 IAM 사용자 또는 그룹 해당 권한.
을 생성하는 방법을 알아보려면 IAM ID 기반 정책 사용 예제 JSON 정책 문서, 참조 JSON 탭에서 정책 만들기 에서 IAM 사용 설명서.
주제
정책 최고 관행
자격 증명 기반 정책은 매우 강력합니다. 이 정책은 계정에서 사용자가 Amazon ECS 리소스를 생성, 액세스 또는 삭제할 수 있는지 여부를 결정합니다. 이 작업으로 인해 AWS 계정에 비용이 발생할 수 있습니다. 자격 증명 기반 정책을 생성하거나 편집할 때는 다음 지침과 권장 사항을 따르십시오.
-
AWS 관리형 정책을 사용하여 시작하기 – Amazon ECS 사용을 빠르게 시작하려면 AWS 관리형 정책을 사용하여 필요한 권한을 직원에게 부여합니다. 이 정책은 이미 계정에서 사용할 수 있으며 AWS에 의해 유지 관리 및 업데이트됩니다. 자세한 내용은 IAM 사용 설명서의 AWS 관리형 정책으로 권한 사용 시작하기를 참조하십시오.
-
최소 권한 부여 – 사용자 지정 정책을 생성할 때는 작업을 수행하는 데 필요한 권한만 부여합니다. 최소한의 권한 조합으로 시작하여 필요에 따라 추가 권한을 부여합니다. 처음부터 권한을 많이 부여한 후 나중에 줄이는 방법보다 이 방법이 안전합니다. 자세한 내용은 IAM 사용 설명서의 최소 권한 부여를 참조하십시오.
-
중요한 작업에 대해 MFA 활성화 – 보안을 강화하기 위해 IAM 사용자가 중요한 리소스 또는 API 작업에 액세스하려면 멀티 팩터 인증(MFA)을 사용해야 합니다. 자세한 내용은 IAM 사용 설명서의 AWS에서 멀티 팩터 인증(MFA) 사용하기를 참조하십시오.
-
보안 강화를 위해 정책 조건 사용 – 실제로 가능한 경우, 자격 증명 기반 정책이 리소스에 대한 액세스를 허용하는 조건을 정의합니다. 예를 들어 요청을 할 수 있는 IP 주소의 범위를 지정하도록 조건을 작성할 수 있습니다. 지정된 날짜 또는 시간 범위 내에서만 요청을 허용하거나, SSL 또는 MFA를 사용해야 하는 조건을 작성할 수도 있습니다. 자세한 내용은 IAM 사용 설명서의 IAM JSON 정책 요소: 조건을 참조하십시오.
허용 사용자 자신의 권한을 볼 수 있는 사용자
이 예제는 IAM 사용자가 자신의 사용자 자격 증명에 연결된 인라인 및 관리형 정책을 볼 수 있도록 허용하는 정책을 생성하는 방법을 보여 줍니다. 이 정책에는 콘솔에서 또는 AWS CLI나 AWS API를 사용하여 프로그래밍 방식으로 이 작업을 완료할 수 있는 권한이 포함됩니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
Amazon ECS 첫 번째 실행 마법사 권한
더 Amazon ECS 첫 번째 실행 마법사는 클러스터 생성 프로세스를 간소화하고 작업 및 서비스 실행. 그러나 사용자는 많은 API에 대한 권한이 필요합니다. 여러 개의 AWS 서비스를 사용하여 마법사를 완료합니다. 더 AmazonECS_FullAccess 관리됨 아래 정책은 Amazon ECS 최초 실행 마법사.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:DeregisterScalableTarget", "application-autoscaling:DescribeScalableTargets", "application-autoscaling:DescribeScalingActivities", "application-autoscaling:DescribeScalingPolicies", "application-autoscaling:PutScalingPolicy", "application-autoscaling:RegisterScalableTarget", "appmesh:ListMeshes", "appmesh:ListVirtualNodes", "appmesh:DescribeVirtualNode", "autoscaling:UpdateAutoScalingGroup", "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateLaunchConfiguration", "autoscaling:DeleteAutoScalingGroup", "autoscaling:DeleteLaunchConfiguration", "autoscaling:Describe*", "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStack*", "cloudformation:UpdateStack", "cloudwatch:DescribeAlarms", "cloudwatch:DeleteAlarms", "cloudwatch:GetMetricStatistics", "cloudwatch:PutMetricAlarm", "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedeploy:ContinueDeployment", "sns:ListTopics", "lambda:ListFunctions", "ec2:AssociateRouteTable", "ec2:AttachInternetGateway", "ec2:AuthorizeSecurityGroupIngress", "ec2:CancelSpotFleetRequests", "ec2:CreateInternetGateway", "ec2:CreateLaunchTemplate", "ec2:CreateRoute", "ec2:CreateRouteTable", "ec2:CreateSecurityGroup", "ec2:CreateSubnet", "ec2:CreateVpc", "ec2:DeleteLaunchTemplate", "ec2:DeleteSubnet", "ec2:DeleteVpc", "ec2:Describe*", "ec2:DetachInternetGateway", "ec2:DisassociateRouteTable", "ec2:ModifySubnetAttribute", "ec2:ModifyVpcAttribute", "ec2:RunInstances", "ec2:RequestSpotFleet", "elasticloadbalancing:CreateListener", "elasticloadbalancing:CreateLoadBalancer", "elasticloadbalancing:CreateRule", "elasticloadbalancing:CreateTargetGroup", "elasticloadbalancing:DeleteListener", "elasticloadbalancing:DeleteLoadBalancer", "elasticloadbalancing:DeleteRule", "elasticloadbalancing:DeleteTargetGroup", "elasticloadbalancing:DescribeListeners", "elasticloadbalancing:DescribeLoadBalancers", "elasticloadbalancing:DescribeRules", "elasticloadbalancing:DescribeTargetGroups", "ecs:*", "events:DescribeRule", "events:DeleteRule", "events:ListRuleNamesByTarget", "events:ListTargetsByRule", "events:PutRule", "events:PutTargets", "events:RemoveTargets", "iam:ListAttachedRolePolicies", "iam:ListInstanceProfiles", "iam:ListRoles", "logs:CreateLogGroup", "logs:DescribeLogGroups", "logs:FilterLogEvents", "route53:GetHostedZone", "route53:ListHostedZonesByName", "route53:CreateHostedZone", "route53:DeleteHostedZone", "route53:GetHealthCheck", "servicediscovery:CreatePrivateDnsNamespace", "servicediscovery:CreateService", "servicediscovery:GetNamespace", "servicediscovery:GetOperation", "servicediscovery:GetService", "servicediscovery:ListNamespaces", "servicediscovery:ListServices", "servicediscovery:UpdateService", "servicediscovery:DeleteService" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "ssm:GetParametersByPath", "ssm:GetParameters", "ssm:GetParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/aws/service/ecs*" }, { "Effect": "Allow", "Action": [ "ec2:DeleteInternetGateway", "ec2:DeleteRoute", "ec2:DeleteRouteTable", "ec2:DeleteSecurityGroup" ], "Resource": [ "*" ], "Condition": { "StringLike": { "ec2:ResourceTag/aws:cloudformation:stack-name": "EC2ContainerService-*" } } }, { "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "*" ], "Condition": { "StringLike": { "iam:PassedToService": "ecs-tasks.amazonaws.com" } } }, { "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsInstanceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "ec2.amazonaws.com", "ec2.amazonaws.com.cn" ] } } }, { "Action": "iam:PassRole", "Effect": "Allow", "Resource": [ "arn:aws:iam::*:role/ecsAutoscaleRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "application-autoscaling.amazonaws.com", "application-autoscaling.amazonaws.com.cn" ] } } }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": [ "ecs.amazonaws.com", "spot.amazonaws.com", "spotfleet.amazonaws.com", "ecs.application-autoscaling.amazonaws.com", "autoscaling.amazonaws.com" ] } } } ] }
또한 첫 번째 실행 마법사는 IAM 역할 사용하는 태스크의 시작 유형에 따라 다릅니다. 예를 들면 Amazon ECS 서비스 역할, 컨테이너 인스턴스 IAM 역할 및 태스크 실행 IAM 역할. 다음 사항을 확실히 하기 위해 첫 번째 실행 경험은 IAM 다음 중 하나가 참이어야 합니다.
-
사용자에게 관리자 액세스 권한이 있습니다. 자세한 내용은 을 참조하십시오. Amazon ECS을 통해 설정.
-
사용자에게는 IAM 서비스 역할 을(를) 작성할 수 있는 권한. 추가 정보 정보, 참조 권한 위임을 위한 역할 생성 AWS 서비스.
-
관리자 액세스 권한이 있는 사용자가 수동으로 필요한 IAM 사용할 계정에서 사용할 수 있도록 합니다. 추가 정보 정보를 보려면 다음을 참조하십시오.
클러스터 예
다음 IAM policy에서는 클러스터를 만들고 나열할 수 있는 권한을 허용합니다. 더
CreateCluster
및 ListClusters
작업이 수락되지 않음
리소스 정의가 *
모두
리소스.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:ListClusters" ], "Resource": [ "*" ] } ] }
다음 IAM 정책에서는 특정
클러스터. 더 DescribeClusters
및 DeleteCluster
조치
클러스터 ARN을 리소스로 수락합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeClusters", "ecs:DeleteCluster" ], "Resource": [ "arn:aws:ecs:us-east-1:<aws_account_id>:cluster/<cluster_name>" ] } ] }
다음 IAM 정책을 사용자 또는 그룹에 연결할 수 있지만 해당 사용자 또는 그룹이 특정 클러스터에서 작업을 수행할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ecs:Describe*", "ecs:List*" ], "Effect": "Allow", "Resource": "*" }, { "Action": [ "ecs:DeleteCluster", "ecs:DeregisterContainerInstance", "ecs:ListContainerInstances", "ecs:RegisterContainerInstance", "ecs:SubmitContainerStateChange", "ecs:SubmitTaskStateChange" ], "Effect": "Allow", "Resource": "arn:aws:ecs:us-east-1:<aws_account_id>:cluster/default" }, { "Action": [ "ecs:DescribeContainerInstances", "ecs:DescribeTasks", "ecs:ListTasks", "ecs:UpdateContainerAgent", "ecs:StartTask", "ecs:StopTask", "ecs:RunTask" ], "Effect": "Allow", "Resource": "*", "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:us-east-1:<aws_account_id>:cluster/default" } } } ] }
컨테이너 인스턴스 예
컨테이너 인스턴스 등록은 Amazon ECS 하지만 사용자가 에서 인스턴스를 수동으로 등록 취소할 수 있도록 허용하려는 시간 클러스터. 컨테이너 인스턴스가 실수로 잘못된 또는 인스턴스가 에서 계속 실행 중인 상태로 종료되었습니다.
다음 IAM 정책을 통해 사용자는 컨테이너를 나열하고 등록 취소할 수 있습니다. 지정된 클러스터의 인스턴스:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DeregisterContainerInstance", "ecs:ListContainerInstances" ], "Resource": [ "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>" ] } ] }
다음 IAM 정책을 통해 사용자는 지정된 컨테이너를 설명할 수 있습니다.
인스턴스가 지정된 클러스터에 있습니다. 이 권한을 모든 컨테이너까지 열려면
인스턴스가 있는 경우 컨테이너 인스턴스 UUID를 다음으로 교체할 수 있습니다.
*
.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeContainerInstances" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>" } }, "Resource": [ "arn:aws:ecs:<region>:<aws_account_id>:container-instance/<container_instance_UUID>" ] } ] }
태스크 정의 예제
태스크 정의 IAM 리소스 수준 권한을 지원하지 않지만 팔로잉 IAM 정책을 통해 사용자가 작업을 등록, 나열 및 설명할 수 있음 정의:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RegisterTaskDefinition", "ecs:ListTaskDefinitions", "ecs:DescribeTaskDefinition" ], "Resource": [ "*" ] } ] }
작업 실행 예
다음을 위한 자원 RunTask
는 태스크 정의입니다. 제한 대상
사용자가 작업 정의를 실행할 수 있는 클러스터의 경우
Condition
블록. 장점은 두 가지를 모두 나열할 필요가 없다는 것입니다.
적절한 액세스를 허용하기 위한 리소스의 태스크 정의 및 클러스터. 당신
둘 중 하나 또는 둘 다 적용할 수 있습니다.
다음 IAM 정책은 특정 특정 클러스터의 작업 정의:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>" } }, "Resource": [ "arn:aws:ecs:<region>:<aws_account_id>:task-definition/<task_family>:*" ] } ] }
작업 시작 예제
다음을 위한 자원 StartTask
는 태스크 정의입니다. 제한 대상
사용자가 작업 정의를 시작할 수 있는 클러스터 및 컨테이너 인스턴스,
에서 지정합니다. Condition
블록. 장점은
작업 정의와 클러스터를 리소스 내에 모두 나열하여
적절한 액세스. 둘 중 하나 또는 둘 다 적용할 수 있습니다.
다음 IAM 정책에서는 특정 특정 클러스터 및 특정 컨테이너 인스턴스에 대한 태스크 정의.
이 예에서는 StartTask
API 및 AWS CLI
또는 다른 AWS SDK를 사용하려면 작업 정의 버전을 지정해야 합니다.
Resource
매핑이 과(와) 일치합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:StartTask" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>", "ecs:container-instances" : [ "arn:aws:ecs:<region>:<aws_account_id>:container-instance/<container_instance_UUID>" ] } }, "Resource": [ "arn:aws:ecs:<region>:<aws_account_id>:task-definition/<task_family>:*" ] } ] }
작업 예 나열 및 설명
다음 IAM 정책에서는 사용자가 지정된 클러스터:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:ListTasks" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>" } }, "Resource": [ "*" ] } ] }
다음 IAM 정책을 통해 사용자는 지정된 클러스터:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:DescribeTasks" ], "Condition": { "ArnEquals": { "ecs:cluster": "arn:aws:ecs:<region>:<aws_account_id>:cluster/<cluster_name>" } }, "Resource": [ "arn:aws:ecs:<region>:<aws_account_id>:task/<task_UUID>" ] } ] }
서비스 작성 예
다음 IAM 정책을 통해 사용자는 Amazon ECS 의 서비스 AWS Management 콘솔:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:Describe*", "application-autoscaling:PutScalingPolicy", "application-autoscaling:RegisterScalableTarget", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "ecs:List*", "ecs:Describe*", "ecs:CreateService", "elasticloadbalancing:Describe*", "iam:AttachRolePolicy", "iam:CreateRole", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:ListRoles", "iam:ListGroups", "iam:ListUsers" ], "Resource": [ "*" ] } ] }
업데이트 서비스 예
다음 IAM 정책을 통해 사용자는 Amazon ECS 의 서비스 AWS Management 콘솔:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "application-autoscaling:Describe*", "application-autoscaling:PutScalingPolicy", "application-autoscaling:DeleteScalingPolicy", "application-autoscaling:RegisterScalableTarget", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "ecs:List*", "ecs:Describe*", "ecs:UpdateService", "iam:AttachRolePolicy", "iam:CreateRole", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRole", "iam:ListAttachedRolePolicies", "iam:ListRoles", "iam:ListGroups", "iam:ListUsers" ], "Resource": [ "*" ] } ] }
설명 Amazon ECS 태그 기반 서비스
ID 기반 정책의 조건을 사용하여 에 대한 액세스를 제어할 수 있습니다.
Amazon ECS 태그를 기반으로 하는 리소스. 이 예제에서는
서비스 을(를) 설명할 수 있는 정책입니다. 그러나, 허가는
서비스 태그 Owner
에는 해당 사용자의 사용자 이름 값이 있습니다. 이
또한 에서 이 작업을 완료하는 데 필요한 권한을 부여합니다.
콘솔.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeServices", "Effect": "Allow", "Action": "ecs:DescribeServices", "Resource": "*" }, { "Sid": "ViewServiceIfOwner", "Effect": "Allow", "Action": "ecs:DescribeServices", "Resource": "arn:aws:ecs:*:*:service/*", "Condition": { "StringEquals": {"ecs:ResourceTag/Owner": "${aws:username}"} } } ] }
이 정책을 에 첨부할 수 있습니다. IAM 귀하의 계정 의 사용자. 사용자 이름이
richard-roe
어떤 것을 설명하려고 하는가 Amazon ECS 서비스,
서비스에 태그를 붙여야 합니다. Owner=richard-roe
또는
owner=richard-roe
. 그렇지 않으면 에 대한 액세스가 거부됩니다. 상태 태그
키 Owner
둘 다 일치 Owner
및 owner
조건 키 이름은 대소문자를 구분하지 않습니다. 자세한 내용은 을 참조하십시오. IAM JSON 정책
요소: 조건 에서 IAM 사용 설명서.