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

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

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

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

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

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

ACLs는 Redis OSS 6ACL에서의 도입을 지원하도록 설계되었습니다. MemoryDB 클러스터와 ACLs 함께를 사용하는 경우 몇 가지 제한 사항이 있습니다.

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

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

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

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

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

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

MemoryDBACLs와 함께를 사용하는 방법에 대한 자세한 내용은 다음과 같습니다.

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

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을(를) 호출하여 사용자 및 암호 해시를 제외하는 방식으로 액세스 문자열을 검색할 수 있습니다.

벡터 검색 기능

벡터 검색의 경우, 모든 검색 명령은 @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용 ACLs 클러스터에 적용

MemoryDB를 사용하려면 다음 단계를 ACLs수행합니다.

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

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

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

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

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

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

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

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

기본 사용자가 포함된 모든 계정에 대해 변경할 수 없는 “오픈 액세스”가 ACL 생성됩니다. 이 사용자만 ACL 기본 사용자가 될 수 있습니다. 클러스터를 생성할 때 클러스터와 연결할 ACL를 선택해야 합니다. 기본 사용자와 ACL 함께 'open-access'를 적용할 수 있는 옵션이 있지만 비즈니스 요구 사항으로 제한된 권한이 있는 사용자ACL로를 생성하는 것이 좋습니다.

TLS 활성화되지 않은 클러스터는 'open-access'ACL를 사용하여 공개 인증을 제공해야 합니다.

ACLs는 사용자 없이 생성할 수 있습니다. 비어 있는 ACL는 클러스터에 액세스할 수 없으며 TLS활성화된 클러스터에만 연결할 수 있습니다.

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

특히 MemoryDBACLs에를 사용할 때 다음과 같은 사용자 암호 제약 조건을 숙지해야 합니다.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 생성(Create)을 선택합니다.

를 사용하여 사용자를 생성하려면 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 하고에서 MemoryDB 콘솔을 엽니다https://console.aws.amazon.com/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 하고에서 MemoryDB 콘솔을 엽니다https://console.aws.amazon.com/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 하고에서 MemoryDB 콘솔을 엽니다https://console.aws.amazon.com/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 하고에서 MemoryDB 콘솔을 엽니다https://console.aws.amazon.com/memorydb/.

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

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

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

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

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

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

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

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

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

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

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

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

  7. 생성(Create)을 선택합니다.

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

를 사용하여 새를 생성하고 사용자를 ACL 추가하려면 CLI
  • 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 하고에서 MemoryDB 콘솔을 엽니다https://console.aws.amazon.com/memorydb/.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

를 사용하여 새 사용자를 ACL 추가하거나 현재 멤버를 제거하여를 수정하려면 CLI
  • 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. 에 로그인 AWS Management Console 하고에서 MemoryDB 콘솔을 엽니다https://console.aws.amazon.com/memorydb/.

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

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

  4. 사용자에서와 연결된 사용자 목록을 검토할 수 있습니다ACL.

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

  6. 태그에서와 연결된 모든 태그를 검토할 수 있습니다ACL.

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

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

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

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

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

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

를 ACL 사용하여를 삭제하려면 CLI
  • delete-acl 명령을 사용하여를 삭제합니다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를 할당하는 ACLs 것입니다.

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

를 사용하여 클러스터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"