본문 바로가기

개발새발 개발자/기타

(19)
느슨해진 권한 관리 씬에 긴장감을 주다 대부분의 IT 서비스에는 관리자가 접속할 수 있는 어드민 페이지가 있다. 우리 회사 또한 어드민 계정이라면 유저, 매출 등 다양한 정보를 어드민 페이지에서 관리할 수 있다. 문제는 회사가 빠르게 성장하면서 구성원도 늘어났는데 이 많은 사람들이 본인의 업무가 무엇이든 간에 어드민 권한 하나만 있으면 모든 정보에 접근할 수 있게 되었다는 것이다. 자칫하면 내부의 누군가가 민감한 정보를 유출하거나 조작할 가능성이 있었다.1. AS-IS메인 서버Node.js 환경의 레거시 서버다. 너무 덩치가 커져버려서 MSA로 계속 분리하고 있으나 아직 대부분의 로직이 메인 서버에 존재한다. 로그인 및 어드민 권한 관리 또한 메인 서버에서 담당한다.Firebase SDK구글에서 제공하는 툴이다. 로그인이나 권한이 필요한 페이..
휴면 처리를 하시겠읍니까, 휴먼? - 2 이번 편은 당일 기준으로 접속한 지 1년이 된 유저를 휴면 상태로 전환하는 로직에 대해 공유하려 한다. 3. 휴면 유저 전환 1편에서 설명했듯 하나의 Job은 여러 Step으로 구성된다. 그리고 이 Step은 Reader, Processor, Writer가 된다. 이 프로젝트에서는 휴면 유저를 선별하는 코드를 Reader에, 휴면 상태로 전환해서 저장하는 부분은 Writer에 구현한다. @Configuration @RequiredArgsConstructor public class ConvertToDormantUserBatchConfig { ... @Bean public Job convertToDormantUserJob() { return jobBuilderFactory.get(JOB) .preventRe..
휴면 처리를 하시겠읍니까, 휴먼? - 1 어느 서비스든 유령 회원은 존재한다. 특히 내가 일하고 있는 교육 서비스라면 더더욱 그럴 것이다. 뭐라도 하나 배워볼까? 하고 들어왔던 유저들이 작심삼일 후 우리의 존재를 잊어버리기 일쑤이기 때문이다. '고갱님, 그러지 말고 다시 한번 들어와서 뭐라도 배워보세요' 하고 마케팅 메일을 보내는 순간, '써본 적도 없는(?,,,잘 생각해보세요,,,우리 좋았잖아요,,,ㅠ) 서비스에서 내 개인정보를 가져다 쓰냐' 며 항의 CS가 빗발친다. 사실 장기 미접속자는 법적으로도 꽤나 민감한 이슈다. 장기 미접속자 정보를 분리 보관, 파기하지 않을 경우 과태료를 물게 되며, 개인정보가 유출되면 회사 이미지 훼손은 물론 과징금도 물게 된다. 중요한 건 꺾일 거지만 하는 마음 문제는...관련 법이 올해 9월에 폐지 예정이라는..
[TypeGraphQL] User 등록하기 1. resolver 이동 및 수정 index.ts에 있던 resolver를 옮겨볼게요. import {Mutation, Query, Resolver} from "type-graphql"; @Resolver() export class RegisterResolver { // gql은 종종 쿼리나 스키마가 없을 때 까다로워지는 경우가 있어 아래는 사용은 안하지만 남겨놓는다. @Query(() => String, {name: 'helloWorld'}) async hello() { return "hello world!"; } @Mutation(() => String) async register() { return "hello world!"; } } 서버를 실행하고 스키마를 확인하면 정상적으로 mutation이 ..
[TypeGraphQL] 설치 및 resolver, entity 생성하기 1. 필요한 라이브러리 설치 graphql, express, typescript 등을 이용해 간단한 서버를 구축해봅시다. TypeGraphQL은 graphql 사용을 도와주는 라이브러리예요. yarn init -y # dependencies yarn add apollo-server-express express graphql reflect-metadata type-graphql # dev dependencies yarn add -D @types/express @types/graphql @types/node nodemon ts-node typescript 터미널에 위와 같이 입력해 설치합니다. 여기서 잠깐, dependencies와 devDependencies의 차이를 짚고 넘어갈게요. dependencie..
[AWS] 특정 IP만 접속할 수 있게 설정하기 요즘 중국 사람들이 그렇게 남의 서버를 훔쳐다가 채굴을 한다면서요...? 그래서 IP를 꼭 막아놔야 한다고 하더라구요!! 간단한 설정으로 내 IP만 접속하도록 해봅시다! 1. EC2 대시보드 접속 EC2 대시보드에 들어가서 왼쪽 메뉴 중 보안 그룹을 클릭해주세요. 2. 해당 그룹 선택 설정하고 싶은 그룹을 클릭해주시면 아래에 인바운드 탭이 보일거예요. 클릭해주세요! 3. 인바운드 변경 SSH를 내 IP로 변경해주시면 지정된 IP 외에는 접속할 수 없게 됩니다 :)
[AWS] 만들어놓은 서버에 접속하기 (Mac OS) 사이드 프로젝트 배포를 위해 처음으로 AWS EC2 서버를 다뤄보게 되었습니다. 팀원이 미리 인스턴스를 만들어놓았기 때문에 이 글에서 인스턴스 생성은 따로 설명하지 않습니다. 이미 생성된 인스턴스에 접속하는 방법을 알아봅니다. AWS 서버는 SSH로 접속할 수 있어요. SSH란 원격으로 시스템에 접속하는 다양한 방법 중 하나입니다! 1. AWS CLI 설치 $ brew install awscli aws-cli는 터미널로 aws를 관리할 수 있는 통합 도구입니다. 위의 명령어로 설치합니다. $ aws configure 설치 뒤에는 aws 명령어를 사용할 수 있습니다. 위와 같이 입력해볼게요. AWS Access Key ID [None]: AWS Secret Access Key [None]: Default ..
Hacktober FEST 2019 - 오픈 소스 기여하고 기념품 받자! 지금 오픈 소스에 기여하고 계신가요? 혹은 하고 싶은데 마땅한 기회를 찾지 못하셨나요? 그렇다면 Hacktober FEST에 참여하세요! 10월 한 달 간 오픈 소스에 Pull Request를 4번 이상 날리면 특별 제작한 티셔츠와 스티커를 받을 수 있답니다 :) https://hacktoberfest.digitalocean.com Hacktoberfest presented by DigitalOcean and DEV Open source is changing the world – one pull request at a time. hacktoberfest.digitalocean.com 1. 근데 이게 뭐하는 행사예요? Hacktoberfest는 DigitalOcean과 DEV에서 진행하는 한 달짜리 오픈 ..