정책을 통한 AWS CloudShell 액세스 및 사용 관리 IAM - AWS CloudShell

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

정책을 통한 AWS CloudShell 액세스 및 사용 관리 IAM

AWS Identity and Access Management (IAM) 에서 제공할 수 있는 액세스 관리 리소스를 사용하여 관리자는 IAM 사용자에게 권한을 부여할 수 있습니다. 이런 방식으로 사용자들은 AWS CloudShell 에 액세스하고 환경 기능을 사용할 수 있습니다. 관리자는 또한 해당 사용자가 쉘 환경에서 수행할 수 있는 작업을 세부적으로 지정하는 정책을 만들 수 있습니다.

관리자가 사용자에게 액세스 권한을 부여하는 가장 빠른 방법은 AWS 관리형 정책을 사용하는 것입니다. AWS관리형 정책은 에서 생성하고 관리하는 독립형 정책입니다. AWS다음과 같은 AWS 관리형 정책을 ID에 연결할 AWS CloudShell IAM 수 있습니다.

  • AWS CloudShellFullAccess: 모든 기능에 대한 전체 액세스 AWS CloudShell 권한과 함께 사용할 수 있는 권한을 부여합니다.

AWS CloudShellFullAccess정책은 와일드카드 (*) 문자를 사용하여 IAM ID (사용자, 역할 또는 그룹) 에게 CloudShell 및 기능에 대한 전체 액세스 권한을 부여합니다. 이 정책에 대한 자세한 내용은 AWS 관리형 정책 사용 설명서를 참조하십시오 AWS CloudShellFullAccess.

참고

IAM다음과 같은 AWS 관리형 정책을 사용하는 ID도 시작할 CloudShell 수 있습니다. 단, 이러한 정책은 광범위한 권한을 제공합니다. 따라서 IAM 사용자의 직무에 필수적인 경우에만 이러한 정책을 부여하는 것이 좋습니다.

  • 관리자: IAM 사용자에게 전체 액세스 권한을 제공하고 사용자가 내 모든 서비스 및 리소스에 AWS권한을 위임할 수 있도록 합니다.

  • 개발자 파워 유저: IAM 사용자가 애플리케이션 개발 작업을 수행하고 AWS 인식 가능한 애플리케이션 개발을 지원하는 리소스 및 서비스를 생성 및 구성할 수 있습니다.

관리형 정책 연결에 대한 자세한 내용은 사용 설명서의 IAM ID 권한 추가 (콘솔) 를 IAM 참조하십시오.

사용자 지정 정책 AWS CloudShell 사용 시 허용 가능한 작업 관리

IAM사용자가 수행할 수 있는 작업을 관리하려면 CloudShellPolicy 관리형 정책을 템플릿으로 CloudShell 사용하는 사용자 지정 정책을 만드십시오. 또는 관련 IAM ID (사용자, 그룹 또는 역할) 에 내장된 인라인 정책을 편집할 수 있습니다.

예를 들어 IAM 사용자의 액세스는 CloudShell 허용하지만 로그인에 사용되는 CloudShell 환경 자격 증명은 전달하지 못하게 할 수 있습니다. AWS Management Console

중요

AWS CloudShell 에서 실행하려면 IAM 사용자에게 다음 작업에 대한 권한이 필요합니다. AWS Management Console

  • CreateEnvironment

  • CreateSession

  • GetEnvironmentStatus

  • StartEnvironment

연결된 정책에서 이러한 작업 중 하나를 명시적으로 허용하지 않는 경우, 시작하려고 하면 IAM 권한 오류가 반환됩니다. CloudShell

AWS CloudShell 권한
명칭 부여된 권한에 대한 설명 시작하는 데 CloudShell 필요한가요?

cloudshell:CreateEnvironment

CloudShell 환경을 만들고, CloudShell 세션 시작 시 레이아웃을 검색하고, 웹 애플리케이션의 현재 레이아웃을 백엔드에 저장합니다. 이 권한은 에 * 설명된 Resource 값으로만 예상됩니다. 에 대한 IAM 정책의 예 CloudShell

cloudshell:CreateSession

에서 CloudShell 환경에 연결합니다. AWS Management Console

cloudshell:GetEnvironmentStatus

CloudShell 환경 상태를 읽어보십시오.

cloudshell:DeleteEnvironment

CloudShell 환경을 삭제합니다.

아니요

cloudshell:GetFileDownloadUrls

CloudShell 웹 인터페이스를 CloudShell 사용하여 파일을 다운로드하는 URLs 데 사용되는 사전 서명된 Amazon S3를 생성합니다. VPC환경에서는 사용할 수 없습니다.

아니요

cloudshell:GetFileUploadUrls

CloudShell 웹 인터페이스를 CloudShell 사용하여 파일을 URLs 업로드하는 데 사용되는 사전 서명된 Amazon S3를 생성합니다. VPC환경에서는 사용할 수 없습니다.

아니요

cloudshell:DescribeEnvironments

환경에 대해 설명합니다.

아니요

cloudshell:PutCredentials

로그인하는 데 사용된 자격 증명을 AWS Management Console to에 CloudShell 전달합니다.

아니요

cloudshell:StartEnvironment

중지된 CloudShell 환경을 시작합니다.

cloudshell:StopEnvironment

실행 중인 CloudShell 환경을 중지합니다.

아니요

에 대한 IAM 정책의 예 CloudShell

다음 예는 액세스 가능한 사용자를 제한하는 정책을 만드는 방법을 보여줍니다 CloudShell. 또한 쉘 환경에서 수행할 수 있는 작업을 알 수 있습니다.

다음 정책은 액세스 CloudShell 및 해당 기능에 대한 완전한 액세스 거부를 시행합니다.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "DenyCloudShell", "Effect": "Deny", "Action": [ "cloudshell:*" ], "Resource": "*" }] }

다음 정책은 IAM 사용자가 액세스할 수 있도록 CloudShell 허용하지만 파일 업로드 및 다운로드를 URLs 위해 사전 서명된 파일을 생성하는 것은 차단합니다. 예를 들어, wget과 같은 클라이언트를 사용하여 환경 간 파일 전송은 계속할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyUploadDownload", "Effect": "Deny", "Action": [ "cloudshell:GetFileDownloadUrls", "cloudshell:GetFileUploadUrls" ], "Resource": "*" }] }

다음 정책은 IAM 사용자의 액세스를 CloudShell 허용합니다. 하지만 이 정책에서는 로그인하는 데 사용한 자격 증명이 CloudShell 환경에 전달되지 AWS Management Console 않도록 합니다. IAM이 정책을 사용하는 사용자는 내에서 CloudShell 자격 증명을 수동으로 구성해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyCredentialForwarding", "Effect": "Deny", "Action": [ "cloudshell:PutCredentials" ], "Resource": "*" }] }

다음 정책을 통해 IAM 사용자는 AWS CloudShell 환경을 만들 수 있습니다.

{ "Version": "2012-10-17", "Statement": [{ "Sid": "CloudShellUser", "Effect": "Allow", "Action": [ "cloudshell:CreateEnvironment", "cloudshell:CreateSession", "cloudshell:GetEnvironmentStatus", "cloudshell:StartEnvironment" ], "Resource": "*" }] }

CloudShell VPC환경을 만들고 사용하는 데 필요한 IAM 권한

CloudShell VPC환경을 만들고 사용하려면 IAM 관리자가 VPC 특정 Amazon EC2 권한에 대한 액세스를 활성화해야 합니다. 이 섹션에는 VPC 환경을 만들고 사용하는 데 필요한 Amazon EC2 권한이 나열되어 있습니다.

VPC환경을 만들려면 역할에 할당된 IAM 정책에 다음과 같은 Amazon EC2 권한이 포함되어야 합니다.

  • ec2:DescribeVpcs

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeDhcpOptions

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateTags

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

다음 사항도 포함하는 것이 좋습니다.

  • ec2:DeleteNetworkInterface

참고

이 권한은 필수는 아니지만 해당 권한이 ENIs 생성한 ENI 리소스 (ManagedByCloudShell키 태그가 지정된 CloudShell VPC 환경용으로 생성됨) 를 정리하는 데 필요합니다. CloudShell 이 권한이 활성화되지 않은 경우 CloudShell VPC 환경을 사용할 때마다 ENI 리소스를 수동으로 정리해야 합니다.

IAM에 CloudShell 대한 액세스를 포함한 모든 액세스 권한을 부여하는 정책 VPC

다음 예에서는 에 대한 액세스를 포함한 전체 권한을 활성화하는 방법을 보여 VPC 줍니다. CloudShell

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudShellOperations", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "AllowDescribeVPC", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowCreateTagWithCloudShellKey", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" }, "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfaceWithSubnetsAndSG", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowCreateNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfacePermissionWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } }, { "Sid": "AllowDeleteNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } } ] }

VPC환경을 위한 IAM 조건 키 사용

VPC설정에 CloudShell 특정 조건 키를 사용하여 VPC 환경에 대한 추가 권한 제어를 제공할 수 있습니다. 또한 VPC 환경에서 사용할 수 있는 서브넷과 보안 그룹을 지정할 수 있습니다.

CloudShell IAM정책에서 다음과 같은 조건 키를 지원합니다.

  • CloudShell:VpcIds— 하나 이상의 허용 또는 거부 VPCs

  • CloudShell:SubnetIds— 하나 이상의 서브넷 허용 또는 거부

  • CloudShell:SecurityGroupIds— 하나 이상의 보안 그룹 허용 또는 거부

참고

공용 CloudShell 환경에 액세스할 수 있는 사용자의 권한을 수정하여 cloudshell:createEnvironment 작업에 제한을 추가하더라도 기존 공용 환경에는 계속 액세스할 수 있습니다. 그러나 이러한 제한이 적용된 IAM 정책을 수정하고 기존 공용 환경에 대한 액세스를 비활성화하려면 먼저 IAM 정책을 업데이트하여 제한을 적용한 다음 계정의 모든 CloudShell 사용자가 CloudShell 웹 사용자 인터페이스 (작업Delete 환경) 를 사용하여 기존 공용 환경을 수동으로 CloudShell 삭제하도록 해야 합니다.

설정에 대한 VPC 조건 키가 포함된 예제 정책

다음 예시는 VPC 설정에 조건 키를 사용하는 방법을 보여줍니다. 원하는 제한 사항이 있는 정책 구문을 생성한 후 대상 사용자 또는 역할에 대한 정책 구문을 추가합니다.

사용자가 VPC 환경만 만들도록 하고 공용 환경 만들기는 거부하도록 하세요.

사용자가 VPC 환경만 만들 수 있도록 하려면 다음 예와 같이 거부 권한을 사용하십시오.

{ "Statement": [ { "Sid": "DenyCloudShellNonVpcEnvironments", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "Null": { "cloudshell:VpcIds": "true" } } } ] }

특정VPCs, 서브넷 또는 보안 그룹에 대한 사용자 액세스를 거부합니다.

특정 VPCs 항목에 대한 사용자 액세스를 거부하려면 를 사용하여 StringEquals 조건의 값을 확인하십시오. cloudshell:VpcIds 다음 예에서는 및 에 대한 사용자 액세스를 vpc-1 거부합니다. vpc-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

특정 VPCs 항목에 대한 사용자 액세스를 거부하려면 StringEquals 를 사용하여 조건의 cloudshell:SubnetIds 값을 확인하십시오. 다음 예에서는 및 에 대한 사용자 액세스를 subnet-1 거부합니다. subnet-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfSubnets", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:SubnetIds": [ "subnet-1", "subnet-2" ] } } } ] }

특정 VPCs 항목에 대한 사용자 액세스를 거부하려면 StringEquals 를 사용하여 조건의 cloudshell:SecurityGroupIds 값을 확인하십시오. 다음 예에서는 및 에 대한 사용자 액세스를 sg-1 거부합니다. sg-2

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfSecurityGroups", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

사용자가 특정 VPC 구성으로 환경을 만들 수 있도록 허용

사용자가 특정 VPCs 항목에 액세스할 수 있도록 StringEquals 하려면 cloudshell:VpcIds 조건 값을 확인하는 데 사용합니다. 다음 예에서는 사용자가 vpc-1 및 에 액세스할 수 있도록 허용합니다vpc-2.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

사용자가 특정 VPCs 항목에 액세스할 수 있도록 StringEquals 하려면 를 사용하여 cloudshell:SubnetIds 조건의 값을 확인하십시오. 다음 예에서는 사용자가 subnet-1 및 에 액세스할 수 있도록 허용합니다subnet-2.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSubnets", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SubnetIds": [ "subnet-1", "subnet-2" ] } } } ] }

사용자가 특정 VPCs 항목에 액세스할 수 있도록 StringEquals 하려면 를 사용하여 cloudshell:SecurityGroupIds 조건의 값을 확인하십시오. 다음 예에서는 사용자가 sg-1 및 에 액세스할 수 있도록 허용합니다sg-2.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSecurityGroup", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

액세스 권한 AWS 서비스

CloudShell 에 로그인할 때 사용한 IAM 자격 증명을 사용합니다 AWS Management Console.

참고

에 로그인할 때 사용한 IAM 자격 증명을 사용하려면 cloudshell:PutCredentials 권한이 있어야 합니다. AWS Management Console

의 이 사전 인증 기능을 CloudShell 사용하면 편리하게 사용할 AWS CLI수 있습니다. 하지만 IAM 사용자에게는 여전히 명령줄에서 AWS 서비스 호출되는 에 대한 명시적 권한이 필요합니다.

예를 들어, IAM 사용자가 Amazon S3 버킷을 생성하고 파일을 객체로 업로드해야 한다고 가정해 보겠습니다. 이러한 작업을 명시적으로 허용하는 정책을 생성할 수 있습니다. IAM콘솔은 JSON 형식이 지정된 정책 문서를 작성하는 프로세스를 안내하는 대화형 시각적 편집기를 제공합니다. 정책을 만든 후 관련 IAM ID (사용자, 그룹 또는 역할) 에 정책을 연결할 수 있습니다.

관리형 정책 연결에 대한 자세한 내용은 사용 설명서의 IAM ID 권한 추가 (콘솔) 를 IAM 참조하십시오.