논리적 디렉터리를 사용하여 Transfer Family 디렉터리 구조를 단순화합니다. - AWS Transfer Family

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

논리적 디렉터리를 사용하여 Transfer Family 디렉터리 구조를 단순화합니다.

논리적 디렉터리는 AWS Transfer Family 서버 디렉터리 구조를 단순화합니다. 논리적 디렉터리를 사용하면 Amazon S3 버킷 또는 Amazon EFS 파일 시스템에 연결할 때 사용자가 탐색할 수 있는 사용자 친화적인 이름으로 가상 디렉터리 구조를 생성할 수 있습니다. 이렇게 하면 사용자가 실제 디렉터리 경로, 버킷 이름 및 파일 시스템 이름을 볼 수 없습니다.

참고

최종 사용자가 수행하도록 허용하는 작업만 수행할 수 있도록 세션 정책을 사용해야 합니다.

논리적 디렉터리를 사용하여 최종 사용자를 위한 사용자 친화적인 가상 디렉터리를 생성하고 버킷 이름을 추상화해야 합니다. 논리적 디렉터리 매핑을 사용하면 사용자가 지정된 논리적 경로 및 하위 디렉터리에만 액세스하고 논리적 루트를 통과하는 상대 경로는 금지할 수 있습니다.

Transfer Family는 상대 요소를 포함할 수 있는 모든 경로를 검증하고 이러한 경로를 Amazon S3에 전달하기 전에 이러한 경로가 해결되지 않도록 적극적으로 차단합니다. 이렇게 하면 사용자가 논리적 매핑을 벗어나지 않습니다.

Transfer Family는 최종 사용자가 논리적 디렉터리 외부의 디렉터리에 액세스하지 못하도록 하지만 고유한 역할 또는 세션 정책을 사용하여 스토리지 수준에서 최소 권한을 적용하는 것이 좋습니다.

chroot 및 디렉터리 구조 이해

chroot 작업을 사용하면 사용자의 루트 디렉터리를 스토리지 계층 구조의 모든 위치로 설정할 수 있습니다. 이렇게 하면 사용자가 구성된 홈 또는 루트 디렉터리로 제한되어 상위 수준 디렉터리에 액세스할 수 없습니다.

Amazon S3 사용자가 로 제한되는 경우를 생각해 보세요amzn-s3-demo-bucket/home/${transfer:UserName}. chroot가 없으면 일부 클라이언트는 사용자가 /amzn-s3-demo-bucket/home까지 이동하도록 허용할 수 있으며, 적절한 디렉터리로 돌아가려면 로그아웃 및 로그인이 필요합니다. chroot 작업을 수행하면이 문제가 방지됩니다.

여러 버킷 및 접두사에서 사용자 지정 디렉터리 구조를 생성할 수 있습니다. 이는 워크플로에 버킷 접두사만으로는 제공할 수 없는 특정 디렉터리 레이아웃이 필요한 경우에 유용합니다. 디렉터리 경로가 파일 시스템의 다른 위치를 참조하는 Linux 파일 시스템에 심볼릭 링크를 생성하는 것과 비슷하게 Amazon S3 내의 여러 비연속 위치에 연결할 수도 있습니다.

논리적 디렉터리 사용 규칙

이 섹션에서는 논리적 디렉터리 사용에 대한 몇 가지 규칙 및 기타 고려 사항을 설명합니다.

매핑 제한

  • 이 일 때 하나의 매핑만 허용됩니다Entry"/"(중첩 경로는 허용되지 않음).

  • 논리적 디렉터리는 사용자 지정 IDP 및 AD 사용자의 경우 최대 2.1MB, 서비스 관리형 사용자의 경우 2,000개 항목의 매핑을 지원합니다. 다음과 같이 매핑 크기를 계산할 수 있습니다.

    1. 형식으로 일반적인 매핑을 작성합니다. {"Entry":"/entry-path","Target":"/target-path"}여기서 entry-pathtarget-path는 사용할 실제 값입니다.

    2. 해당 문자열의 문자 수를 계산한 다음 하나(1)를 추가합니다.

    3. 해당 수에 서버에 대해 보유한 대략적인 매핑 수를 곱합니다.

    3단계에서 예상한 수가 2.1MB 미만인 경우 매핑이 허용 한도 내에 있는 것입니다.

대상 경로 요구 사항

  • 버킷 또는 파일 시스템 경로가 사용자 이름에 따라 파라미터화된 경우 ${transfer:UserName} 변수를 사용합니다.

  • 연결된 IAM 역할에 해당 스토리지 위치에 액세스하는 데 필요한 권한이 있는 한 다른 Amazon S3 버킷 또는 파일 시스템을 가리키도록 대상을 구성할 수 있습니다.

  • 모든 대상은 슬래시(/)로 시작해야 하지만 슬래시로 끝날 수는 없습니다. 예를 들어, /amzn-s3-demo-bucket/images는 정답이고, amzn-s3-demo-bucket/images /amzn-s3-demo-bucket/images/는 그렇지 않습니다.

스토리지 고려 사항

  • Amazon S3는 폴더가 가상 개념으로만 존재하는 객체 스토어입니다. Amazon S3 스토리지를 사용할 때 Transfer Family는 후행 슬래시가 있는 0바이트 객체가 없더라도 접두사를 STAT 작업의 디렉터리로 보고합니다. 후행 슬래시가 있는 적절한 0바이트 객체도 STAT 작업의 디렉터리로 보고됩니다. 이 동작은 Amazon Simple Storage Service 사용 설명서의 폴더를 사용하여 Amazon S3 콘솔에서 객체 구성에 설명되어 있습니다.

  • 파일과 폴더를 구분해야 하는 애플리케이션의 경우 Amazon Elastic File System(Amazon EFS)을 Transfer Family 스토리지 옵션으로 사용합니다.

  • 사용자의 논리적 디렉터리 값을 지정하는 경우 사용하는 파라미터는 사용자 유형에 따라 다릅니다.

    • 서비스 관리 사용자의 경우 HomeDirectoryMappings에서 논리적 디렉터리 값을 제공하세요.

    • 사용자 지정 자격 증명 공급자 사용자의 경우에 논리적 디렉터리 값을 제공합니다HomeDirectoryDetails.

사용자 디렉터리 값

  • 논리적 디렉터리 값을 지정하기 위한 파라미터는 사용자 유형에 따라 다릅니다.

    • 서비스 관리 사용자의 경우 HomeDirectoryMappings에서 논리적 디렉터리 값을 제공하세요.

    • 사용자 지정 자격 증명 공급자 사용자의 경우에 논리적 디렉터리 값을 제공합니다HomeDirectoryDetails.

  • LOGICAL HomeDirectoryType을 사용하는 경우 서비스 관리형 사용자, Active Directory 액세스 및 응답에 HomeDirectoryDetails가 제공되는 사용자 지정 자격 증명 공급자 구현에 대한 HomeDirectory 값을 지정할 수 있습니다. 지정하지 않으면 HomeDirectory의 기본값은 입니다/.

논리적 디렉터리를 구현하는 방법에 대한 자세한 내용은 섹션을 참조하세요논리적 디렉터리 구현.

Amazon EFS를 위한 논리적 디렉터리 구성

Transfer Family 서버에서 Amazon EFS를 사용하는 경우, 사용자가 논리적 홈 디렉터리에서 작업할 수 있으려면 먼저 읽기 및 쓰기 권한이 있는 사용자의 홈 디렉터리를 생성해야 합니다. 사용자는 논리적 홈 디렉터리 상의 mkdir에 대한 권한이 없기 때문에 이 디렉터리를 직접 만들 수는 없습니다.

사용자의 홈 디렉터리가 존재하지 않고 사용자가 ls 명령을 실행하면 시스템은 다음과 같이 응답합니다:

sftp> ls remote readdir ("/"): No such file or directory

상위 디렉터리에 대한 관리 액세스 권한이 있는 사용자는 사용자의 논리적 홈 디렉터리를 생성해야 합니다.

사용자 지정 AWS Lambda 응답

맞춤 ID 공급자에 연결하는 Lambda 함수와 함께 논리적 디렉터리를 사용할 수 있습니다. 이렇게 하려면 Lambda 함수에서 HomeDirectoryTypeLOGICAL(으)로 지정하고, HomeDirectoryDetails 파라미터에 Entry와(과) Target를 추가합니다. 예:

HomeDirectoryType: "LOGICAL" HomeDirectoryDetails: "[{\"Entry\": \"/\", \"Target\": \"/amzn-s3-demo-bucket/theRealFolder"}]"

다음 코드는 맞춤 Lambda 인증 호출로부터의 응답 성공의 예입니다.

aws transfer test-identity-provider \ --server-id s-1234567890abcdef0 \ --user-name myuser { "Url": "https://a1b2c3d4e5.execute-api.us-east-2.amazonaws.com/prod/servers/s-1234567890abcdef0/users/myuser/config", "Message": "", "Response": "{\"Role\": \"arn:aws:iam::123456789012:role/bob-usa-role\", \"HomeDirectoryType\": \"LOGICAL\", \"HomeDirectoryDetails\": \"[{\\\"Entry\\\":\\\"/myhome\\\",\\\"Target\\\":\\\"/amzn-s3-demo-bucket/theRealFolder\\\"}]\", \"PublicKeys\": \"[ssh-rsa myrsapubkey]\"}", "StatusCode": 200 }
참고

"Url": 행은 API Gateway 메서드를 맞춤 ID 공급자로 사용하는 경우에만 반환됩니다.