앱을 제한된 Redis 계정으로 전환

RedisBeginner
지금 연습하기

소개

지원 대시보드에는 준비된 제한 계정이 있지만 여전히 넓은 기본 Redis 계정으로 연결합니다. 설정을 전환하고 이전 연결 경로를 폐기하면서 모니터를 유지합니다.

이 독립 환경에는 이전 수업의 dashboard 계정이 있습니다. 배운 Redis 명령과 ACL 개념만 필요합니다. 앱 작업마다 새 연결을 열기 때문에 다음 요청은 현재 설정을 사용합니다.

새 환경의 앱 기준 동작 확인

이 단계에서는 새 환경에서 정상 동작을 확인합니다. Dashboard 탭으로 전환합니다. 입력은 Ticket 104: password reset, 결과는 비어 있고 사용자 이름은 default입니다. Process ticket을 클릭합니다. Processed: Ticket 104: password reset이 나타나는지 확인합니다.

이 단계를 시작하려면 실습 인터페이스에서 Dashboard 탭을 선택합니다.

Client 탭으로 전환하여 비공개 애플리케이션 설정을 읽습니다. cat은 파일을 출력합니다. 터미널은 애플리케이션 설정 디렉터리인 /workspace에서 시작합니다.

다음 명령을 실행하기 전에 Client 탭으로 전환합니다.

cat app.json

JSON은 중괄호 안에 이름이 있는 필드를 저장합니다. username은 Redis 사용자, password는 인증 비밀입니다. 문자열은 큰따옴표로 감싸고 필드는 쉼표로 구분합니다. 현재 사용자는 default이고 암호는 비어 있습니다.

앱은 요청마다 파일을 다시 읽고 새 Redis 연결을 엽니다. 재시작이나 클라이언트 코딩은 필요 없습니다. 별도 monitor 계정이 monitor:heartbeat를 읽습니다. 기본 계정을 변경해도 이 기능을 유지하세요. 설정에 비밀이 포함되므로 제공된 파일은 공개 제공되지 않는 비공개 파일입니다.

대시보드 연결 전환

이 단계에서는 애플리케이션이 제한된 계정을 사용하도록 합니다. Client 탭으로 전환합니다. 필드 두 개로 구성된 설정을 교체합니다. cat > app.json은 다음 텍스트를 파일로 리디렉션하여 기존 내용을 덮어씁니다. 따옴표로 감싼 EOF는 here-document의 시작입니다. 마지막 EOF를 단독 행으로 포함하여 모든 행을 붙여 넣습니다. 따옴표는 JSON 안의 셸 확장을 막습니다.

이 단계를 시작하려면 실습 인터페이스에서 Client 탭을 선택합니다.

다음 명령을 실행하기 전에 Client 탭으로 전환합니다.

cat > app.json <<'EOF'
{"username":"dashboard","password":"Dash-Lab-42"}
EOF

설정만 변경합니다. 이 새 환경의 계정에는 이미 support:* 아래 GET/SET 권한이 있습니다. Dashboard 탭으로 전환하고 페이지를 새로 고쳐 표시된 사용자 이름이 dashboard인지 확인한 후 Process ticket을 다시 클릭합니다. 이전 계정의 결과가 남아 있는 것만으로는 부족합니다. 새 작업이 설정된 계정의 읽기와 쓰기 가능 여부를 입증합니다.

전용 dashboard 계정으로 티켓을 처리하는 Dashboard

페이지에 WRONGPASS가 표시되면 Client 탭으로 돌아가 위의 전체 블록을 사용하여 JSON 자격 증명을 수정한 후 Dashboard 탭으로 전환하여 Process ticket을 재시도합니다. NOPERM이면 Cache Server 탭으로 전환하고 cache-admin ACL GETUSER dashboard를 실행하여 키 패턴과 명령을 확인합니다. 첫 실습의 전체 reset 명령으로 잘못된 계정을 복구할 수 있습니다. JSON 형식이 잘못되었다면 Client 탭으로 전환하여 위의 전체 설정 블록을 다시 입력한 후 Dashboard 탭으로 돌아가 재시도합니다.

maint를 지름길로 사용하지 마세요. 앱에는 자체 제한 계정이 필요합니다.

광범위한 기본 항목 폐기

이 단계에서는 정상 계정을 유지하면서 자동 기본 접근 경로를 비활성화합니다. Cache Server 탭으로 전환합니다. cache-admin이 사용하는 유지보수 계정은 계속 활성화되어 관리가 가능합니다.

이 단계를 시작하려면 실습 인터페이스에서 Cache Server 탭을 선택합니다.

ACL SETUSER default off는 기본 사용자로 새 인증을 하지 못하게 합니다. 활성 변경을 설정된 ACL 파일에 저장하세요.

다음 명령을 실행하기 전에 Cache Server 탭으로 전환합니다.

cache-admin ACL SETUSER default off
cache-admin ACL SAVE

두 명령 모두 OK를 반환합니다. Client 탭으로 전환하고 자격 증명 없이 새 연결을 시도합니다.

다음 명령을 실행하기 전에 Client 탭으로 전환합니다.

redis-cli -h cache-server GET support:ticket

의도한 거부인 NOAUTH Authentication required.를 예상합니다. 인증 계정의 권한 부족인 NOPERM과 다릅니다. 여기서는 호출마다 새 연결을 만듭니다. 사용자를 꺼도 이미 인증된 세션이 종료된다는 보장은 없습니다. 활성 세션 폐기는 이 실습 범위 밖입니다.

Dashboard 탭으로 전환하고 페이지를 새로 고친 후 Process ticket을 클릭합니다. 이름 있는 계정은 계속 동작해야 합니다. 잘못된 계정을 비활성화했다면 Cache Server 탭으로 전환하여 해당 계정의 올바른 reset 규칙을 다시 실행하고 저장합니다. 애플리케이션 설정 오류를 감추기 위해 광범위한 기본 계정을 다시 활성화하지 마세요.

보안과 가용성 함께 시험

이 단계에서는 허용된 작업, 금지된 데이터와 불필요한 명령을 비교합니다. Client 탭으로 전환합니다. 각 --askpass 프롬프트에 Dash-Lab-42를 입력합니다.

이 단계를 시작하려면 실습 인터페이스에서 Client 탭을 선택합니다.

다음 명령을 실행하기 전에 Client 탭으로 전환합니다.

redis-cli -h cache-server --user dashboard --askpass GET support:result

처리된 지원 결과는 계속 읽힙니다. 다음 명령은 의도적으로 무관한 재무 데이터를 요청합니다.

redis-cli -h cache-server --user dashboard --askpass GET finance:payroll

NOPERM을 예상합니다. CONFIG GET은 서버 설정을 읽지만 이런 관리 읽기도 앱에는 필요 없습니다. 인용한 별표는 모든 설정 이름을 요청하며 그대로 Redis에 도달해야 합니다.

redis-cli -h cache-server --user dashboard --askpass CONFIG GET '*'

명령 권한에 따른 NOPERM을 예상합니다. 이제 기존 모니터 계정을 사용하고 암호 요청에 Monitor-Lab-42를 입력하세요.

redis-cli -h cache-server --user monitor --askpass GET monitor:heartbeat

healthy가 예상됩니다. 모든 계정을 비활성화하거나 Redis를 중지하면 이 정상 동작 검사를 깨뜨리며 수정으로 인정되지 않습니다. Cache Server 탭으로 전환합니다. 적용 중인 ACL과 저장된 파일을 표시합니다.

다음 명령을 실행하기 전에 Cache Server 탭으로 전환합니다.

cache-admin ACL LIST
cat /data/users.acl

default off를 포함하여 저장된 항목과 적용 중인 항목이 일치해야 합니다. 다르면 cache-admin ACL SAVE를 반복합니다. Dashboard 탭으로 전환하고 Process ticket을 한 번 더 클릭합니다. 실제 가용성과 의미 있는 거부가 결과를 입증합니다. 녹색 페이지만으로는 최소 권한을 입증할 수 없습니다.

요약

실제 앱을 제한 Redis 계정으로 전환하고 새 기본 접근을 끈 뒤 ACL을 저장했습니다. 금지 요청과 정상 업무 및 모니터 작업을 확인했습니다. 검사는 새 연결을 사용하며 기존 세션 폐기를 뜻하지 않습니다.