액세스 제어 목록(ACL)을 사용하여 사용자 인증 - Amazon MemoryDB

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

액세스 제어 목록(ACL)을 사용하여 사용자 인증

액세스 제어 목록(ACL)을 사용하여 사용자를 인증할 수 있습니다.

ACL을 사용하면 사용자를 그룹화하여 클러스터 액세스를 제어할 수 있습니다. 이러한 액세스 제어 목록은 클러스터에 대한 액세스를 구성하는 방법으로 설계되었습니다.

ACL를 사용할 경우, 다음 섹션에 설명된 대로 액세스 문자열을 사용하여 사용자를 생성하고 특정 사용 권한을 할당합니다. 사용자를 특정 역할(관리자, 인사 관리)에 맞게 조정되어 있으며 하나 이상의 MemoryDB 클러스터에 배포되는 액세스 제어 목록에 할당합니다. 이렇게 하면 동일한 MemoryDB 클러스터 또는 클러스터를 사용하는 클라이언트 간에 보안 경계를 설정하고 클라이언트가 서로의 데이터에 액세스하지 못하게 할 수 있습니다.

ACL은 Redis OSS 6에서의 Redis ACL 도입을 지원하도록 설계되었습니다. MemoryDB 클러스터에서 ACL을 사용할 때 몇 가지 제약 사항이 있습니다.

  • 액세스 문자열에는 암호를 지정할 수 없습니다. 또는 호출을 사용하여 암호를 설정합니다. CreateUserUpdateUser

  • 사용자 권한의 경우 onoff를 액세스 문자열의 일부로 전달합니다. 액세스 문자열에 둘 다 지정되지 않은 경우, 사용자에게 off이(가) 할당되며 클러스터에 대한 액세스 권한이 없습니다.

  • 금지된 명령은 사용할 수 없습니다. 금지된 명령을 지정하면 예외가 발생합니다. 명령 전체 목록은 제한된 레디 스 OSS 명령 단원을 참조하세요.

  • reset 명령을 액세스 문자열의 일부로 사용할 수 없습니다. API 파라미터에 암호를 지정하고 MemoryDB가 암호를 관리합니다. 따라서 사용자의 모든 암호를 제거할 수 있는 reset을 사용할 수 없습니다.

  • 레디 스 OS 6에는 ACL LIST 명령이 도입되었습니다. 이 명령은 각 사용자에게 적용된 ACL 규칙과 함께 사용자 목록을 반환합니다. MemoryDB는 ACL LIST 명령을 지원하지만 Redis OSS와 같은 암호 해시에 대한 지원은 포함하지 않습니다. MemoryDB를 사용하면 DescribeUsers작업을 사용하여 액세스 문자열에 포함된 규칙을 비롯한 유사한 정보를 가져올 수 있습니다. 하지만 사용자 암호는 검색하지 DescribeUsers않습니다.

    MemoryDB에서 지원하는 다른 읽기 전용 명령에는 ACL WHOAMI, ACL USERSACL CAT가 포함됩니다. MemoryDB는 다른 쓰기 기반 ACL 명령을 지원하지 않습니다.

MemoryDB와 함께 ACL을 사용하는 방법은 다음에 자세히 설명되어 있습니다.

액세스 문자열을 사용하여 권한 지정

MemoryDB 클러스터에 대한 권한을 지정하려면 또는 를 사용하여 액세스 문자열을 만들고 사용자에게 할당합니다. AWS CLI AWS Management Console

액세스 문자열은 사용자에게 적용되는 공백으로 구분된 규칙의 목록으로 정의됩니다. 사용자가 실행할 수 있는 명령과 사용자가 작업할 수 있는 키를 정의합니다. 명령을 실행하기 위해서는 사용자가 실행될 명령과 명령에 의해 액세스되는 모든 키에 액세스할 수 있어야 합니다. 규칙은 왼쪽에서 오른쪽으로 누적되어 적용되며, 제공된 문자열에 중복 항목이 있는 경우, 제공된 문자열 대신 단순화된 문자열이 사용될 수 있습니다.

ACL 규칙의 구문에 대한 자세한 내용은 ACL 섹션을 참조하세요.

다음 예에서 액세스 문자열은 사용 가능한 모든 키와 명령에 액세스할 수 있는 활성 사용자를 나타냅니다.

on ~* &* +@all

액세스 문자열 구문은 다음과 같이 구분됩니다.

  • on - 사용자가 활성 사용자입니다.

  • ~* - 사용 가능한 모든 키에 대한 액세스 권한을 부여합니다.

  • &*— 모든 pubsub 채널에 액세스 권한이 부여됩니다.

  • +@all - 사용 가능한 모든 명령에 대한 액세스 권한을 부여합니다.

이전 설정은 최소한의 제한적인 설정입니다. 이러한 설정을 수정하여 보안을 강화할 수 있습니다.

다음 예에서 액세스 문자열은 “app::” 키스페이스로 시작하는 키에 대한 읽기 액세스로 제한된 액세스 권한을 가진 사용자를 나타냅니다.

on ~app::* -@all +@read

사용자가 액세스할 수 있는 명령을 나열하여 이러한 권한을 세부적으로 조정할 수 있습니다.

+command1 - 명령에 대한 사용자의 액세스는 command1로 제한됩니다.

+@category - 사용자의 액세스는 명령 범주로 제한됩니다.

사용자에게 액세스 문자열을 할당하는 방법에 대한 자세한 내용은 콘솔 및 CLI를 사용하여 사용자 및 액세스 제어 목록 생성 섹션을 참조하세요.

기존 워크로드를 MemoryDB로 마이그레이션하는 경우, ACL LIST을(를) 호출하여 사용자 및 암호 해시를 제외하는 방식으로 액세스 문자열을 검색할 수 있습니다.

벡터 검색 기능

참고

이 기능은 MemoryDB의 프리뷰 릴리즈 단계에 있으며 변경될 수 있습니다.

벡터 검색의 경우, 모든 검색 명령은 @search 범주 및 기존 범주 @read, @write, @fast에 속하며 또한 @slow는 검색 명령을 포함하도록 업데이트되었습니다. 사용자에게 범주에 대한 액세스 권한이 없는 경우 사용자는 범주 내의 어떤 명령에도 액세스할 수 없습니다. 예를 들어 사용자가 @search에 대한 액세스 권한이 없는 경우, 사용자는 검색 관련 명령을 실행할 수 없습니다.

다음의 표는 검색 명령이 적절한 범주에 매핑되었음을 나타냅니다.

VSS 명령 @read @write @fast @slow
FT.CREATE Y Y
FT.DROPINDEX Y Y
FT.LIST Y Y
FT.INFO Y Y
FT.SEARCH Y Y
FT.AGGREGATE Y Y
FT.PROFILE Y Y
FT.ALIASADD Y Y
FT.ALIASDEL Y Y
FT.ALIASUPDATE Y Y
FT._ALIASLIST Y Y
FT.EXPLAIN Y Y
FT.EXPLAINCLI Y Y
FT.CONFIG Y Y

MemoryDB용 클러스터에 ACL 적용

MemoryDB ACL을 사용하려면 다음 단계를 수행하세요.

  1. 하나 이상의 사용자를 생성합니다.

  2. ACL을 생성하고 사용자를 목록에 추가합니다.

  3. 클러스터에 ACL을 할당합니다.

이러한 단계는 다음에 자세히 설명되어 있습니다.

콘솔 및 CLI를 사용하여 사용자 및 액세스 제어 목록 생성

ACL 사용자에 대한 사용자 정보는 사용자 이름 및 선택적으로 암호 및 액세스 문자열로 구성됩니다. 액세스 문자열은 키와 명령에 대한 권한 수준을 제공합니다. 이름은 사용자마다 고유하며 엔진에 전달됩니다.

제공하는 사용자 권한이 ACL의 의도된 목적에 적합한지 확인합니다. 예를 들어, Administrators라는 ACL을 생성하는 경우, 해당 그룹에 추가하는 모든 사용자는 키 및 명령에 대한 전체 액세스 권한으로 설정된 액세스 문자열을 가져야 합니다. e-commerce ACL에 있는 사용자의 경우, 액세스 문자열을 읽기 전용 액세스로 설정할 수 있습니다.

MemoryDB는 "default" 사용자 이름을 사용하여 계정당 기본 사용자를 자동으로 구성합니다. ACL에 명시적으로 추가하지 않는 한 어떤 클러스터와도 연결되지 않습니다. 이 사용자는 수정하거나 삭제할 수 없습니다. 이 사용자는 이전 Redis OSS 버전의 기본 동작과의 호환성을 위한 것이며 모든 명령을 호출하고 모든 키에 액세스할 수 있는 액세스 문자열을 가지고 있습니다.

기본 사용자가 포함된 모든 계정에 대해 변경할 수 없는 “개방형 액세스” ACL이 생성됩니다. 이 ACL은 기본 사용자 한 명이 소속될 수 있는 유일한 ACL입니다. 클러스터를 생성할 때 클러스터와 연결할 ACL을 선택해야 합니다. 기본 사용자에게 “개방형 액세스” ACL을 적용할 수도 있지만, 업무상 필요에 따라 권한이 제한된 사용자를 사용하여 ACL을 생성하는 것이 좋습니다.

TLS가 활성화되지 않은 클러스터는 “개방형 액세스” ACL을 사용하여 개방형 인증을 제공해야 합니다.

사용자 없이 ACL을 생성할 수 있습니다. 빈 ACL은 클러스터에 액세스할 수 없으며 TLS 지원 클러스터와만 연결할 수 있습니다.

사용자를 생성할 때 최대 두 개의 암호를 설정할 수 있습니다. 암호를 수정해도 클러스터에 대한 모든 기존 연결이 유지됩니다.

특히 ACLs for MemoryDB을 사용할 때 이러한 사용자 암호 제약 조건에 유의해야 합니다.

  • 암호는 16~128자 길이의 인쇄 가능한 문자여야 합니다.

  • 영숫자가 아닌 다음과 같은 문자는 허용되지 않습니다. , "" / @.

콘솔 및 CLI를 사용하여 사용자 관리

콘솔에서 사용자를 생성하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Users(사용자)를 선택합니다.

  3. 사용자 생성(Create user)을 선택합니다.

  4. 사용자 생성 페이지에서 이름을 입력합니다.

    클러스터 명명 제약 조건은 다음과 같습니다.

    • 1~40자의 영숫자 또는 하이픈으로 구성되어야 합니다.

    • 문자로 시작해야 합니다.

    • 하이픈 2개가 연속될 수 없습니다.

    • 끝에 하이픈이 올 수 없습니다.

  5. 암호에서 최대 두 개의 암호를 입력할 수 있습니다.

  6. 액세스 문자열에 액세스 문자열을 입력합니다. 액세스 문자열은 사용자에게 허용할 키와 명령에 대한 권한 수준을 설정합니다.

  7. 태그의 경우 선택적으로 태그를 적용하여 사용자를 검색 및 필터링하거나 비용을 추적할 수 있습니다 AWS .

  8. 생성을 선택합니다.

CLI를 사용하여 사용자를 생성하려면
  • create-user 명령을 사용하여 사용자를 생성합니다.

    Linux, macOS, Unix의 경우:

    aws memorydb create-user \ --user-name user-name-1 \ --access-string "~objects:* ~items:* ~public:*" \ --authentication-mode \ Passwords="abc",Type=password

    Windows의 경우:

    aws memorydb create-user ^ --user-name user-name-1 ^ --access-string "~objects:* ~items:* ~public:*" ^ --authentication-mode \ Passwords="abc",Type=password
콘솔에서 사용자를 수정하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Users(사용자)를 선택합니다.

  3. 수정할 사용자 옆의 라디오 단추를 선택하고 작업 -> 수정을 선택합니다.

  4. 비밀번호를 수정하려면 암호 수정 라디오 버튼을 선택합니다. 단, 암호가 두 개인 경우, 둘 중 하나를 수정할 때는 둘 다 입력해야 합니다.

  5. 액세스 문자열을 업데이트하려면 새 문자열을 입력하세요.

  6. 수정을 선택합니다.

CLI를 사용하여 사용자를 수정하려면
  1. update-user 명령을 사용하여 사용자를 수정합니다.

  2. 사용자를 수정하면 해당 사용자와 연결된 액세스 제어 목록이 업데이트되고 ACL과 연결된 클러스터도 업데이트됩니다. 기존 연결은 모두 유지됩니다. 예를 들면 다음과 같습니다.

    Linux, macOS, Unix의 경우:

    aws memorydb update-user \ --user-name user-name-1 \ --access-string "~objects:* ~items:* ~public:*"

    Windows의 경우:

    aws memorydb update-user ^ --user-name user-name-1 ^ --access-string "~objects:* ~items:* ~public:*"
콘솔에서 사용자 세부 정보를 보려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Users(사용자)를 선택합니다.

  3. 사용자 이름에서 사용자를 선택하거나 검색 상자를 사용하여 사용자를 찾습니다.

  4. 사용자 설정에서 사용자의 액세스 문자열, 암호 수, 상태 및 Amazon 리소스 이름(ARN) 을 검토할 수 있습니다.

  5. 액세스 제어 목록(ACL)에서 사용자가 속한 ACL을 검토할 수 있습니다.

  6. 태그에서 사용자와 관련된 모든 태그를 검토할 수 있습니다.

describe-users 명령을 사용하여 사용자의 세부 정보를 볼 수 있습니다.

aws memorydb describe-users \ --user-name my-user-name
콘솔에서 사용자를 삭제하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 Users(사용자)를 선택합니다.

  3. 수정하려는 사용자 옆의 라디오 단추를 선택하고 작업 -> 삭제를 선택합니다.

  4. 확인하려면 확인 텍스트 상자에 delete을(를) 입력한 다음 삭제를 선택합니다.

  5. 취소하려면 취소를 선택합니다.

CLI를 사용하여 사용자를 삭제하려면
  • delete-user 명령을 사용하여 사용자를 삭제합니다.

    계정이 삭제되고 해당 계정이 속한 모든 액세스 제어 목록에서 제거됩니다. 다음은 예입니다.

    Linux, macOS, Unix의 경우:

    aws memorydb delete-user \ --user-name user-name-2

    Windows의 경우:

    aws memorydb delete-user ^ --user-name user-name-2

콘솔 및 CLI를 사용하여 액세스 제어 목록 관리

다음과 같이 액세스 제어 목록을 생성하여 하나 이상의 클러스터에 대한 사용자 액세스를 구성하고 제어할 수 있습니다.

콘솔에서 다음 절차에 따라 액세스 제어 목록을 관리합니다.

콘솔을 사용하여 액세스 제어 목록을 생성하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 액세스 제어 목록(ACL) 을 선택합니다.

  3. ACL 생성을 선택합니다.

  4. 액세스 제어 목록(ACL) 생성 페이지에서 ACL 이름을 입력합니다.

    클러스터 명명 제약 조건은 다음과 같습니다.

    • 1~40자의 영숫자 또는 하이픈으로 구성되어야 합니다.

    • 문자로 시작해야 합니다.

    • 하이픈 2개가 연속될 수 없습니다.

    • 끝에 하이픈이 올 수 없습니다.

  5. 선택된 사용자에서 다음 작업 중 하나를 수행합니다.

    1. 새 사용자를 생성하려면 사용자 생성을 선택합니다.

    2. 관리를 선택한 다음 사용자 관리 대화 상자에서 사용자를 선택한 다음 선택을 선택하여 사용자를 추가합니다.

  6. 태그의 경우 선택적으로 태그를 적용하여 ACL을 검색 및 필터링하거나 비용을 추적할 수 있습니다. AWS

  7. 생성을 선택합니다.

다음 절차에 따라 CLI를 사용하여 액세스 제어 목록을 생성합니다.

CLI를 사용하여 새 ACL을 생성하고 사용자를 추가하려면
  • create-acl 명령을 사용하여 ACL을 생성합니다.

    Linux, macOS, Unix의 경우:

    aws memorydb create-acl \ --acl-name "new-acl-1" \ --user-names "user-name-1" "user-name-2"

    Windows의 경우:

    aws memorydb create-acl ^ --acl-name "new-acl-1" ^ --user-names "user-name-1" "user-name-2"
콘솔을 사용하여 액세스 제어 목록을 수정하려면
  1. AWS Management Console 로그인하고 https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔을 엽니다.

  2. 왼쪽 탐색 창에서 액세스 제어 목록(ACL) 을 선택합니다.

  3. 수정할 ACL을 선택하고 수정을 선택합니다.

  4. 수정 페이지의 선택된 사용자에서 다음 중 하나를 수행합니다.

    1. ACL에 추가할 사용자 생성을 선택하여 새 사용자를 생성합니다.

    2. 관리를 선택한 다음 사용자 관리 대화 상자에서 사용자를 선택하거나 선택 취소한 다음 선택을 선택하여 사용자를 추가하거나 제거합니다.

  5. 액세스 제어 목록(ACL) 생성 페이지에서 ACL 이름을 입력합니다.

    클러스터 명명 제약 조건은 다음과 같습니다.

    • 1~40자의 영숫자 또는 하이픈으로 구성되어야 합니다.

    • 문자로 시작해야 합니다.

    • 하이픈 2개가 연속될 수 없습니다.

    • 끝에 하이픈이 올 수 없습니다.

  6. 선택된 사용자에서 다음 작업 중 하나를 수행합니다.

    1. 새 사용자를 생성하려면 사용자 생성을 선택합니다.

    2. 관리를 선택한 다음 사용자 관리 대화 상자에서 사용자를 선택한 다음 선택을 선택하여 사용자를 추가합니다.

  7. 변경 내용을 저장하려면 수정을 선택하고 변경 내용을 삭제하려면 취소를 선택합니다.

CLI를 사용하여 새 사용자를 추가하거나 현재 멤버를 제거하여 ACL을 수정하려면
  • update-acl 명령을 사용하여 ACL을 수정합니다.

    Linux, macOS, Unix의 경우:

    aws memorydb update-acl --acl-name new-acl-1 \ --user-names-to-add user-name-3 \ --user-names-to-remove user-name-2

    Windows의 경우:

    aws memorydb update-acl --acl-name new-acl-1 ^ --user-names-to-add user-name-3 ^ --user-names-to-remove user-name-2
참고

ACL 에서 제거된 사용자에게 속하는 열려 있는 모든 연결이 이 명령으로 종료됩니다.

콘솔에서 ACL 세부 정보를 보려면
  1. https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔에 AWS Management Console 로그인하고 여십시오.

  2. 왼쪽 탐색 창에서 액세스 제어 목록(ACL)을 선택합니다.

  3. ACL 이름에서 ACL을 선택하거나 검색 상자를 사용하여 ACL을 찾습니다.

  4. 사용자에서 ACL과 관련된 사용자 목록을 검토할 수 있습니다.

  5. 관련 클러스터에서 ACL이 속한 클러스터를 검토할 수 있습니다.

  6. 태그에서 ACL과 관련된 모든 태그를 검토할 수 있습니다.

describe-acls 명령을 사용하여 ACL의 세부 정보를 볼 수 있습니다.

aws memorydb describe-acls \ --acl-name test-group
콘솔을 사용하여 액세스 제어 목록을 삭제하려면
  1. https://console.aws.amazon.com/memorydb/ 에서 MemoryDB 콘솔에 AWS Management Console 로그인하고 여십시오.

  2. 왼쪽 탐색 창에서 액세스 제어 목록(ACL)을 선택합니다.

  3. 수정하려는 ACL을 선택한 다음 삭제를 선택합니다.

  4. 삭제 페이지에서 확인 상자에 delete를 입력하고 삭제 또는 취소를 선택하여 ACL이 삭제되지 않도록 합니다.

그룹에 속한 사용자가 아닌 ACL 자체가 삭제됩니다.

CLI를 사용하여 ACL을 삭제하려면
  • delete-acl 명령을 사용하여 태그를 삭제합니다.

    Linux, macOS, Unix의 경우:

    aws memorydb delete-acl / --acl-name

    Windows의 경우:

    aws memorydb delete-acl ^ --acl-name

    이전 예에서는 다음 응답을 반환합니다.

    aws memorydb delete-acl --acl-name "new-acl-1" { "ACLName": "new-acl-1", "Status": "deleting", "EngineVersion": "6.2", "UserNames": [ "user-name-1", "user-name-3" ], "clusters": [], "ARN":"arn:aws:memorydb:us-east-1:493071037918:acl/new-acl-1" }

클러스터에 액세스 제어 목록 할당

ACL을 생성하고 사용자를 추가한 후 ACL 구현의 마지막 단계는 ACL을 클러스터에 할당하는 것입니다.

콘솔을 사용하여 클러스터에 액세스 제어 목록 할당

를 사용하여 클러스터에 ACL을 추가하려면 을 참조하십시오 AWS Management Console. MemoryDB 클러스터 생성

를 사용하여 클러스터에 액세스 제어 목록 할당 AWS CLI

다음 AWS CLI 작업을 수행하면 전송 중 암호화 (TLS) 가 활성화되고 acl-name 매개 변수에 값이 포함된 클러스터가 생성됩니다. my-acl-name 서브넷 그룹 subnet-group는 존재하는 서브넷 그룹으로 대체합니다.

키 파라미터
  • --engine-version - 6.2가 되어야 합니다.

  • --tls-enabled - 인증 및 ACL 연결에 사용됩니다.

  • --acl-name - 이 값은 클러스터에 대해 지정된 액세스 권한을 가진 사용자로 구성된 액세스 제어 목록을 제공합니다.

Linux, macOS, Unix의 경우:

aws memorydb create-cluster \ --cluster-name "new-cluster" \ --description "new-cluster" \ --engine-version "6.2" \ --node-type db.r6g.large \ --tls-enabled \ --acl-name "new-acl-1" \ --subnet-group-name "subnet-group"

Windows의 경우:

aws memorydb create-cluster ^ --cluster-name "new-cluster" ^ --cluster-description "new-cluster" ^ --engine-version "6.2" ^ --node-type db.r6g.large ^ --tls-enabled ^ --acl-name "new-acl-1" ^ --subnet-group-name "subnet-group"

다음 AWS CLI 작업은 전송 중 암호화 (TLS) 를 활성화하고 acl-name 매개 변수를 해당 값으로 설정하여 클러스터를 수정합니다. new-acl-2

Linux, macOS, Unix의 경우:

aws memorydb update-cluster \ --cluster-name cluster-1 \ --acl-name "new-acl-2"

Windows의 경우:

aws memorydb update-cluster ^ --cluster-name cluster-1 ^ --acl-name "new-acl-2"