-
신시스토리
SINSIWAY News 2020. Nov. - Dec.
COVID-19 확산 방지에 따른 재택근무 시작신시웨이는 20년 11월 23일 부터 코로나-19 감염병 확산 방지와 임직원 및 고객사의 안전을 위해 전 직원 재택근무를 실시 중에 있으며, 정부 정책과 현 상황에 따라 매주 금요일 재택근무 연장 여부를 결정 하고 있다. 또한, 기술지원 엔지니어의 경우 다양한 환경의 고객사를 방문하여 지원하기 때문에 감염병 노출에 취약하므로, 방문 지원보다는 원격 지원 등의 비대면 지원을 권고하고 있다. 기술 직군(연구/개발, 기술지원) 공개 채용신시웨이는 11월 17일 부터 11월 29일까지 기술 직군(Developer, Solution Engineer, QA)에 대해 2021년 신입사원 공개 채용을 실시하였다. 이번 공채 채용에는 150여 명의 신입사원이 지원하였으며, 최종 합격자는 소정의 입사 직무 교육 수료 후 교육 역량 등을 평가하여 모집 부문에 해당하는 부서에 배치될 예정이다. 면접 일정은 다음과 같다.12.15(화) 비대면 온라인 면접(팀장급 실무자)12.22(화) 1차 합격자 비대면 온라인 면접(임원)12.24(목) 최종 합격자 발표 예정 2020년 임원 워크샵 개최12월 16일 신시웨이 제주 R&D센터에서 '2020년도 하반기 임원 워크숍'을 진행할 예정이다. 이번 워크샵은 2021년도 사업 전략과 제품 경쟁력 강화 방안 등을 논의할 예정이다. 또한, 매년 진행 하였던 임직원 송년회 행사는 감염증 확산을 방지 하기 위해 별도로 진행하지 않을 예정이다. 특허 출원지난 11월 18일 '데이터베이스에 저장된 데이터에 대한 접근 제어를 위한 서비스 제공 시스템 및 방법'(출원번호 : 10-2020-0154627)에 대한 특허를 출원 하였다.이번 출원은 DB 서버에 요청한 데이터가 사용자(클라이언트)에게 수신된 상태에서도 사용자의 이용 권한에 따라 요청 데이터에 대한 사용자의 접근 제어(데이터 추척 및 관리)가 이루어지도록 지원하여 DB 서버에 저장된 보안이 필요한 데이터의 유출을 방지하여 DB 서버에 저장된 데이터에 대한 보안성을 높이는데 그 목적이 있다.
-
- 20.12.09
-
IT·보안
문자열 처리 함수 strstr, strcasecmp Tip
C/C++ 개발을 하면서 문자열 처리 함수를 사용할 때 원치 않는 결과를 얻는 경우가 있습니다. 이러한 데에는 여러 가지 상황이 있지만 가장 많이 범할 수 있는 상황은 고려하지 않았던 상황이 발생한 경우와 함수 내부 동작을 정확히 알지 못하는 경우에 문제가 발생합니다.후자의 한 가지 예로 strcasecmp 함수를 들 수 있습니다. 이 함수의 내부 동작을 정확히 아는 개발자가 많지는 않을 것입니다. “_”(95)와 “A”(65) 두 문자열을 strcasecmp로 비교하면 어느 문자열이 크다고 나오는지 아시나요? 대부분의 개발자들은 아스키코드 표에 따라 “_”가 “A” 보다 크다고 이야기하겠지만 결과는 반대입니다.strstr : 스트링 안에서 원하는 스트링을 찾는 함수strcasecmp : 비교할 스트링들의 알파벳을 소문자로 변환하여 문자열 비교하는 함수example 1. strstr로 IP 리스트에서 IP를 제대로 찾아오지 못하는 문제.[ 실행결과 ]192.168.10.40위와 같은 경우 찾고자 하는 IP는 192.168.10.4인데, 192.168.10.40를 리턴합니다. 원인은 ip의 길이와 상관없이 문자열을 찾은 것입니다. 이런 케이스에서 원하는 결과를 얻기 위해서는 문자열 길이까지 함께 비교해줘야 합니다. 이러한 문제를 해결하기 위해서는 길이까지 비교하도록 조건을 추가하면 정확한 값을 얻을 수 있습니다.example 1. 대문자로 정렬된 스트링 배열에서 bsearch시 strcasecmp로 키워드를 못 찾는 문제[ 실행 결과 ]input : d_ | find: null실행 결과를 보면 “D_”를 찾아야 하는데 찾지 못합니다. 문제의 원인은 strcasecmp를 사용한 것입니다. strcasecmp는 비교할 문자열들을 소문자로 변환 후 비교합니다. 이때 알파벳만 소문자로 변환하기 때문에 문제가 발생한 것입니다. ‘_’의 아스키코드(95)는 ‘I’의 아스키코드(73) 값보다 큽니다. ‘I’를 소문자로 변경하면 ‘I’는 ‘i’(105)가 되어 ‘_’보다 큰 값이 됩니다. 결론적으로 input값 “_d”로 bsearch를 수행했을 때 “_D”를 찾아야 되는데 찾지 못하게 되는 것입니다. strcasecmp는 소문자로 변환해서 대소 비교하기 때문에 알파벳이 아닌 기호들은 소문자로 변경하면서 본의 아니게 알파벳보다 값이 커지는 경우가 있어 발생한 문제입니다.이러한 경우에는 대문자로 이뤄진 스트링 배열에서 bsearch로 찾을 때 찾고자 하는 값을 대문자로 변경 후 strcmp로 비교하면 됩니다. 글. 기술연구소 | 윤 건
-
- 20.12.08
-
IT·보안
암호화 패딩(Padding) & Base64 Encoding
블록암호화(CBC, ECB, CFB, OFB)는 평문에 연속되는 Key Stream을 적용하여 1bit씩 암호화하는 스트림 암호화와 달리 블록 단위로 암호화가 이뤄지게 된다. 블록 암호화에는 CBC, ECB, CFB, OFB 모드가 있고 이때 CFB, OFB는 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같기 때문에 패딩이 필요 없지만, CBC, ECB는 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 알기 위해서 Padding을 사용해야 한다. 즉, 패딩(padding)이란 암호화 하고자 하는 데이터가 블록의 길이보다 부족할 경우 패딩을 사용하여 완전한 블록단위로 만들어준 후 암호화를 해야 한다는 것이다.테스트 결과에서 보이듯 OFB모드에서는 원본 데이터와 암호화 데이터 길이가 같기 때문에 패딩이 필요 없으나 CBC모드는 블록의 배수가 되기 때문에 패딩이 필요한 것을 확인할 수 있다.패딩(Padding)의 종류제로 패딩(Zero Padding, Null Padding)패딩이 필요한 부분을 0으로 채우는 방식이며 메시지 끝 부분에 0이 포함되어 있을 경우 어디까지가 데이터이고 어디까지가 패딩인지 구분이 되지 않기 때문에 보통 사용되지는 않는다.Petra Cipher의 Zero Padding 처리 방법 - enc[일반 데이터 + Zero Padding] + trailer - trailer에는 일반 데이터의 Length 정보가 들어가 있다. - 데이터의 Legnth 정보가 들어가 있는 이유는 일반 데이터의 제일 마지막 데이터가 ‘0’인 경우를 고려하여 Trailer를 붙인 것이다.비트 패딩(Bit Padding)패딩이 필요한 부분은 0으로 채우되, 최상위 비트는 1로 채우는 방식이며 최상위 바이트는 16진수로 80이 된다.(2진수로는 1000 0000)즉, 맨뒤에서부터 앞으로 오면서 1이 나올 때 까지를 패딩으로 구분하며 메시지 길이가 블록 크기의 배수여서 패딩이 필요하지 않은 경우에는, 메시지의 일부를 패딩으로 판단하게 된다. 위와 같은 문제는 패딩을 위한 하나의 블록을 둠으로써 해결할 수 있으나, 최악의 경우 expansion ratio가 2가 된다.(하나의 블록 크기의 메시지를 보내기 위해서 하나의 블록 크기의 패딩을 붙여야 한다.)8byte 기준으로 사용을 하며 평문이 블록 크기의 배수가 되지 못하면 필요한 바이트 값만큼 부족한 부분을 채운다.[PKCS5 패딩(PKCS5 Padding) = 8byte 기준](데이터가 5byte 및 4byte인 경우)(데이터가 8byte인 경우)16byte 기준으로 사용을 하며 평문이 블록 크기의 배수가 되지 못하면 필요한 바이트 값만큼 부족한 부분을 채운다.[PKCS7 패딩(PKCS7 Padding) = 16byte 기준](데이터가 10byte인 경우)(데이터가 16byte인 경우)인코딩(Encoding)인코딩(Encoding)은 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식을 말한다.Base64란 Binary Data를 Text로 바꾸는 Encoding(binary-to-text encoding schemes)의 하나로써 BinaryData를 Character set에 영향을 받지 않는 공통 ASCII 영역의 문자로만 이루어진 문자열로 바꾸는 Encoding이다.Base64를 글자 그대로 직역하면 64진법이라는 뜻이다. 64진법은 컴퓨터한테 특별한데 그 이유는 64가 2의 제곱수 64=2^6이며 2의 제곱수에 기반한 진법 중 화면에 표시되는 ASCII 문자들로 표시할 수 있는 가장 큰 진법이기 때문이다.(ASCII에는 제어 문자가 다수 포함되어 있기 때문에 화면에 표시되는 ASCII문자는 128개가 되지 않는다.) 변경하는 방식을 간략하게 설명하면 Binary Data를 6bit씩 자른 뒤 6bit에 해당하는 문자를 아래 Base64 색인표에서 찾아 치환한다.(실제로는 Padding을 더해주는 과정이 추가된다.)Base64 Encoding 특징· 2진 데이터를 ASCII 형태의 텍스트로 표현 가능하다.· Web 인증 중 기본 인증에 사용한다.· 끝부분의 padding(==) 식별 가능하다.· 64개의 문자 영문 대(26), 영문 소(26), 숫자(10),+,- 를 사용한다.단, 000000이 A로 변한다. 기본 원리는 간단한다. 문자열 -> ASCII binary -> 6bit Cut -> base64 encoding 방식으로 진행이 된다. 그러나 한 가지 문제가 있다. 모든 문자열이 3개씩 남김 없이 끊어지진 않는다는 것이다. 그래서 Padding을 사용하여 빈자리를 채운 후 인코딩을 하게 된다.참고자료· 해쉬넷(블록암호) : http://wiki.hash.kr/index.php/블록암호· 위키피디아(Padding) : https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation https://en.wikipedia.org/wiki/Padding_(cryptography)#Bit_padding· 위키피디아(Base64) : https://en.wikipedia.org/wiki/Base64글. 기술지원 2팀 | 정종찬
-
- 20.12.07
-
IT·보안
Java Object to CSV
Jackson 라이브러리를 사용하면 자바 객체에 담긴 내용을 Json 뿐만 아니라 CSV(Comma-Separated Values)로도 전환 할 수 있습니다. CSV는 엑셀로 파일을 바로 열어보려는 요구에서 주로 사용 되는데 자바 객체에 담긴 내용을 CSV로 전환하고 파일로 저장하는 방법을 알아 보고자 합니다.pom.xmljackson-databind, jackson-dataformat-csv를 추가한다.그러나 jackson-databind에는 jackson-core, jackson-annotation 의존성이 있어, jackson-databind 만 있어도 된다.자바 객체에서 CSV 파일 생성CSV 형식은 데이터베이스 테이블처럼 열(Column)과 행(Row)으로 표현된다. 자바 객체를 리스트로(java.util.List)로 전달하면, 데이터를 담고 있는 변수로 컬럼을 구성하고 리스트로 들어오는 데이터를 행 단위로 써 내려가는 식이다. Java Object(VO)변수 위에 @JsonProperty("제목")으로 CSV Header에 해당하는 컬럼명을 별도 지정할 수 있다. @JsonPropertyOrder로 컬럼의 순서도 바꿀 수 있다. @Getter @Setter도 달아준다.CsvMapper, CsvSchemaJSON에서 ObjectMapper를 사용한 것 처럼, CSV는 CsvMapper를 사용한다. CsvSchema로 원하는 형식을 잡아준다.파일 생성파일을 준비하고 ObjectWriter로 리스트 데이터로 파일을 작성한다.CsvMapper에서 바로 파일로 내려쓰는 방법도 있지만, OutputStreamWriter에서 인코딩(MS949)을 설정하여야 UTF-8로 저장해 둔 한글을 엑셀에서 정상적으로 볼 수 있다.`.writeAll(responseVoList)` 스키마에 넘겼던 객체의 리스트 인스턴스를 넘겨주면 끝이지만, 파일이 아닌 문자열로 받고 싶다면, JSON처럼 writeValueAsString을 쓸 수도 있다`csvMapper.writer(csvSchema).writeValueAsString(responseDtoList);`적용글. SIGN팀 | 류대석
-
- 20.11.26
-
신시스토리
신시웨이, 서울시 일·생활균형 우수기업(여성 맞춤형) 표창
신시웨이는 서울특별시가 주최하고 서울시여성가족재단이 주관하는 '제 2회 서울시 일·생활균형 박람회'에서 「서울시 일·생활균형 우수기업」에 선정되어 표창을 수상 하였습니다. 이번 표창은 시간 유연성, 여성 맞춤형, 돌봄현장 맞춤형 총 3개 분야에 대한 시상이 이루어졌으며, 신시웨이는 '여성 직원 협의회 운영'으로 여성 직원들에게 발생할 수 있는 불합리한 요소를 제거하고 이를 사전에 방지하며, 일과 생활균형을 이룰 수 있도록 '출산 및 돌봄 휴가'를 적극 장려하고, 실천하는 등 여성 직원들의 근무 환경 향상을 위해 노력하여 '여성 맞춤형 우수 기업'에 대한 표창을 수상 하였습니다. 신시웨이를 대표하여 표창을 수여 받은 김재현 부사장은 "직원들의 일·생활균형을 위해 회사 내부적으로 여러 가지 정책을 시행하였고, 일과 생활균형을 위해 앞으로 더 노력하는 신시웨이가 되겠다"라는 표창 소감을 전하였습니다. · 청년과 함께 성장하는 우수 중소기업으로 3년 연속 청년친화강소기업 선정2018년 고용노동부 청년친화강소기업(임금 우수, 일생활균형 우수, 고용안정 우수) 선정2019년 고용노동부 청년친화강소기업(임금 우수, 일생활균형 우수, 고용안정 우수) 선정2020년 고용노동부 청년친화강소기업(임금 우수, 일생활균형 우수, 고용안정 우수) 선정 · 근로자의 일·생활균형을 지원하고 국가경쟁력 향상에 기여하여2019년 여성가족부 가족친화기업 인증(인증 기간 2019년 12월 1일 - 2022년 11월 30일) · 일·생활균형 프로그램 및 제도의 적극적 운영으로2020년 서울특별시 일·생활균형 실천 우수 기업 선정
-
- 20.11.16
-
이벤트
신시웨이 뉴스레터 이름을 지어주세요!
* 신시웨이 뉴스레터 주제는! *신시웨이 뉴스레터는 최신 보안 정보와 솔루션 정보등을 공유 하기 위해 20년 10월 처음 발간 하였습니다. 신시웨이 뉴스레터는 자사 솔루션 소개 보다 보안담당자, DBA등 데이터베이스 및 보안업무 영역에 계시는분들을 위해 대표적으로 아래와 같은 소식들을 매달 10일 발송해 드리고자 합니다.- 전문 분야 -각종 법규와 규제에 대한 최근 소식과 해설 데이터베이스 보안(접근제어, 암호화)에 대한 필요성과 기술적 접근세계/국내 보안 시장 동향주요 IT, 보안 헤드라인 뉴스한 눈에 보는 주요 보안 지표KISA를 통한 보안 공지- 일반 분야 -직장인에게 유요한 생활 속 꿀팁(신.세.계)신시웨이의 최근 소식그리고! 다양한 이벤트!* 매월 10일에 발행 되는 신시웨이 뉴스레터 이름을 지어주세요 * - 응모 방법 : 본 글 하단 비공개 댓글 응모 (이름, 소속, 연락처, 뉴스레터 이름, 이름 뜻/풀이) - 이벤트 기간 : 20. 11. 06 - 20. 11. 24 - 당선작 발표 : 20. 11. 30(예정) * 상품 및 당첨자 수는 변경될 수 있습니다.
-
- 20.11.06
-
신시스토리
SINSIWAY News 2020. Oct. - Nov.
2020년 가족친화경영 실천 포럼 사례 발표한국건강가정진흥원이 주최하고 여성가족부와 주한스웨덴대사관이 후원한 「2020년 가족친화경영 실천 포럼」이 2020년 10월 14일 온라인을 통해 전국에 생중계되었다. 이번 포럼은 유연 근무와 재택 근무를 통한 일과 가정의 양립방안이라는 주제로 가족친화인증 기업 및 기관들의 성공 사례를 들어보고, 스웨덴 사회보험청 가족경제과 니클라스 뢰프그렌(Niklas Lofgren) 대변인으로부터 스웨덴의 경제 가족 정책 사례를 살펴볼 수 있었다.중소기업 대표로 이번 발표 참여한 신시웨이 송종훈 과장은 “인간미와 따스함을 더한 신시웨이 유연근무제 도입기”라는 주제로 신시웨이의 유연근무제 사례를 발표 하였으며, 신시웨이는 노사협의회를 통해 지난 2019년 부터 부서별 업무에 최적화된 "탄력 및 선택적 근로시간제"와 "간주근로제"를 도입하였고 그로 인한 업무 시너지효과가 점차 나타나고 있다고 발표하였다.또한, 코로나19로 인한 재택근무 시 근무 시간과 성과 측정 방법에 대한 질문에는 GPS를 이용한 별도 시스템으로 근무시간을 측정 하지만 성과 측정은 근무 시간에 비례하여 측정하지 않고 오직 성과에 의해서만 측정될 수 있도록 별도의 시스템이 갖추고 있다고 답변 하였다. 신시웨이 임직원 대상 “2020 조직의 다양성과 일생활균형” 오프라인 교육2020년 11월 02일 신시웨이 문정동 본사 회의실에서는 “2020 조직의 다양성과 일생활균형”에 대한 오프라인 교육을 실시하였다. 이번 교육을 통해 신시웨이 임직원들은 일과 생활균형 조직문화를 선도하기 위해서는 성 평등, 변화해 가는 조직 문화, 상호 소통, 이해관계에 대한 필요성을 깨달았다. 또한, ‘차별’ 보다는 ‘다양성’에 대한 감수성을 높여야는 것을 알 수 있었다. 이번 교육을 맡은 장영복 강사는 “성 평등 조직문화 확산을 위해서는 남녀가 동등한 파트너로서 존중하고, 함께 성장하기 위한 해법을 찾는 것이 중요” 하다고 강조하였다.신시웨이는 「2020년 서울시 일생활균형 우수기업」에서 “여성 맞춤형 기업”으로 선정되어 오는 15일 서울시 표창을 받을 예정이다. 11월 임직원 생일 파티 열려11월 초 송파구 문정동 본사에서는 11월 생이를 맞이한 임직원들의 생일 파티가 진행되었다. 60여명의 임직원 중 11월 생일을 맞이한 직원은 「고객지원본부 기술지원 1팀」 조명근 선임 한 명으로 생일 파티에 참여한 40여명의 임직원의 축하를 받았다.이번 생일 파티는 연말 사업 마무리로 바쁜 가운데 직원들 서로의 근황을 묻고 담소를 나누며 각 부서별 직원들과의 친밀도를 형성하게 되는 의미 있는 시간을 가졌다. 신시웨이는 매달 첫째주 피자, 치킨 등의 다과를 준비하여 생일자들을 위한 작은 파티를 열고 있으며, 생일자들에게는 생일 선물로 상품권이 지급 된다.
-
- 20.11.05
-
IT·보안
새로운 웹 기능 WebAssembly
2018년 8월경 우연히 Chrome Dev Summit 2017 발표를 시청하면서 웹 브라우저의 새로운 기능이 추가되고 있는 상황을 알게 되었는데 그 당시에는 웹 브라우저에 대한 새로운 기술 프로젝트들이 시도되고 있다는 느낌과 흥미로운 주제 정도로만 느껴졌었습니다. 그러나 그로부터 2년이 지난 지금 WebAssembly는 점점 웹에서의 영향력이 커지게 되고 있는 것을 보고 WebAssembly에 대해 좀 더 자세히 알아보게 되었습니다.WebAssembly 탄생 배경WebAssembly(약칭: WA, Wasm)가 탄생하게 된 배경은 과거 Web 기반 어플리케이션의 한계 즉 브라우저상에서 동작하는 프로그램들의 성능 때문이었습니다. 그래서 많은 사람들은 Web 브라우저상에서 네이티브 환경처럼 동작하는 프로그램 성능을 구현하기 위해 많은 노력을 하기 시작하였는데 대표적인 프로젝트가 Mozilla asm.js 그리고 Google Native Client(PNaCI/NaCI)가 대표적인 프로젝트입니다.2017년 2월 28일, 4개의 주요 브라우저 업체들은 WebAssembly의 MVP(Minimum Viable Product)가 완료되었다는 합의에 이르렀고, 이는 브라우저에서 안정적인 버전을 지원하기 시작했으며, 그 후 2019년 12월, W3C는 HTML, CSS, Javascript 외 WebAssembly을 4번째 언어로 공식 권고하였고 이로써 Web 환경에 큰 변화가 시작되었습니다.WebAssembly 란?Wasm(WebAssembly)은 새로운 유형의 바이너리 코드이며, Wast(WebAssembly text format) 또는 C, C++, Java, RUST, Golang 등과 같이 다양한 언어로 작성된 것을 컴파일 과정을 통해 Wasm 바이너리 코드를 생성하여 이를 브라우저에서 실행할 수 있도록 하는 새로운 유형의 코드 입니다이로써 Wasm은 웹 브라우저에서 여러 언어로 작성된 코드를 네이티브에 가까운 속도로 실행할 수 있는 길을 제공 하였습니다. 그 외에도 W3C 웹어셈블리 커뮤니티 그룹에서는 Wasm에 대해 다음과 같은 목표를 가지고 있는데 첫번째는 다양한 플랫폼에서 사용할 수 있고 두번째는 디버깅이 가능해야 하며 세번째는 보안성을 유지 해야고 마지막 네번째는 이전 버전과의 호환성을 유지하도록 하는 목표를 가지고 있습니다.1. C/C++로 작성된 코드를 Emscripten(clang + LLVM) complie toolchain 컴파일 요청2. Emscripten이 컴파일 결과를 받아 .wasm 바이너리로 변환 시켜줍니다. $emcc hello_sinsiway.c -s WASM=1 -o hello_sinsiway.wsam3. Wasm는 그 자체로 DOM에 접근할 수가 없으므로, 자바스크립트의 접착제 코드[fetch(), Webassembly.compile(),WebAssebly.Instance()]와 HTML에 연결해주는 과정을 거치면 브라우저에서 실행 가능하게 됩니다.현재 Wasm는 이식성과 관련해 다양한 브라우 및 플랫폼에서 지원하고 있으며, 조금 더 시간이 지나면 호환성에 대한 부분도 많이 개선될 것으로 보입니다.WebAssembly 적용 사례현재 Wasm 적용한 프로젝트는 100여 개가 있고, 현재도 새로운 프로젝트들이 생겨나고 있습니다. 그중 대표적인 사례로는 AUTODESK로 AUTODESK는 AutoCAD 소프트웨어를 웹 브라우저에서도 사용할 수 있게 하려고 Flash를 사용하기도 했고, HTML5와 Javascript의 조합을 사용하기도 했습니다.그러나 기능 및 성능에 제약이 있고 코드를 다시 재작성해야 하는 문제가 발생하게 되었는데 WebAssembly를 사용하면서 35년 전에 작성된 AutoCAD Core C++ Code를 재사용하여 AutoCAD 웹 앱으로 성공적으로 전환하였습니다.AutoCAD 웹 앱 구조(Build the future of the web with WebAssembly and more (Google I/O '18))AutoCAD Web AppMS Blazor는 WebAssembly를 이용하여 클라이언트 웹 개발에 Javascript 대신 C#코드를 사용하여 웹 UI를 빌드할 수 있도록 하였으며 .NET 라이브러리를 그대로 활용할 수 있게 하여 .NET개발자로 하여금 플랫폼 확장성을 높일 수 있게 하였습니다.WebAssembly는 C++,C#, Java, Go, Rust 언어를 사용하는 웹 어플리케이션을 개발해야 하는 상황이라면 혹은 기존에 작성된 C 라이브러리를 웹에 적용할 때도 효과적인 입니다. 또한, 응용 프로그램 배포가 브라우저로 제한되고 동시에 가능한 모든 운영체제를 포함하는 것 역시 큰 장점입니다.글. 프리세일즈·마케팅팀 | 이경진
-
- 20.11.05
-
IT·보안
대용량 처리를 위한 Virtual Scrolling
1990년대의 CS 모델 프로그램들이 2000년대 이후에는 Web 모델 프로그램들로 전환이 많이 이루어지고 있습니다.이러한 추세에 맞추어 대량의 데이터를 처리하는 알고리즘 및 기법들도 새로운 환경에 변화되고 있습니다. 일반적으로 데이터베이스에 저장된 데이터를 조회하여 사용자 화면에 표출할 때 조회한 데이터를 그리드 페이지에 출력하여 페이징 처리하게 되는데 이때 대량의 데이터를 조회하여 출력할 경우 스크롤 이동 시 딜레이 현상이 발생하게 되는데 이러한 현상을 개선하고 최소화하기 위해 Virtual Scrolling 기법이 많이 활용되고 있습니다.우리가 Web browser로 대량의 데이터를 다룰 때 화면에 표기되는 html element들을 오브젝트 개수만큼 생성하게 되면 클라이언트 자원을 많이 소모하게 되고, 이 때문에 브라우저 화면이 멈추거나 부드러운 조작을 할 수 없게 됩니다.Virtual Scrolling은 화면의 보이는 영역만 element들을 생성하고 보이지 않는 영역은 빈 공간으로 두어, 스크롤링 시 내부의 연산을 통하여 다음 element를 추가하고, 기존 element를 제거하여 사용자에게 최적의 퍼포먼스를 제공하는 기법입니다.위의 Virtual Scrolling의 메커니즘을 보면 앞서 말했던 실제 보이는 영역과 가려져 있는 빈 영역이 존재하는 것을 볼 수 있고, 중간에 Padding row라는 영역이 있는 것을 볼 수 있습니다.Padding row는 스크롤링시 다음 보여줄 데이터를 연산하기 위한 과정의 공백을 메우기 위한 여분의 row element로서, 부드러운 화면의 조작을 위해 존재하는 element로 사용자가 실제 스크롤링을 하면 이동한 만큼 다음 보일 row element를 계산하고 새로운 element가 추가되면 기존 있던 element가 제거되어 element의 개수를 유지하게 됩니다. Padding row의 최적화된 개수는 클라이언트마다 다를 수 있습니다.Virtual Scrolling을 구현하기 위한 중요한 요소 중 하나는 row height입니다. 하나의 row element의 높이가 일정하지 않다면 전체 스크롤링 할 수 있는 높이를 구할 수 없게 되고, 전체 높이 값이 일정하지 않다면 스크롤링시 원하는 다음 화면을 기대할 수 없게 됩니다.Virtual Scrolling을 구현 중 빠르게 이동되거나 어떤 지점으로 스크롤링이 바로 돼야 하는 상황을 대비하여 Skip paging이란 기법이 필요한데 Skip paging은 스크롤 중간의 연산 없이 바로 최종 화면의 element만 계산하여 보여주는 기법으로, 이 기법 없이 그리드를 구현하게 된다면 빠른 스크롤링이나 특정 지점 스크롤링시 지연이 발생 될 수 있습니다.결과적으로 이러한 메커니즘들 때문에 사용자는 대량의 데이터를 부드럽게 조작해 볼 수 있으며, 자원 낭비로 인해 화면 멈춤 등의 이슈가 발생하지 않게 됩니다.현재 새롭게 출시를 준비 하는 Petra DataStudio(가칭)은 사용자 및 데이터베이스 정보를 중앙에서 집중적으로 관리하여 기업 내 DB 보안 및 작업의 편의성을 제공해주는 Web bases SQL Tool로 Virtual Scrolling을 적용하여 빠른 렌더링 속도를 자랑하며 작성 또는 사용된 SQL을 조직 사용자 간 공유할 수 있는 특징을 가지고 있습니다. 또한, 다양한 형태의 데이터 출력 리포트를 제공하며 데이터 암호화 지원으로 데이터에 대한 보안성을 강화시켰습니다.Petra DataStudio는 현재 알파 버전에 대한 테스트를 진행하고 있으며, 고객 의견 수렴을 위해 On-Line Open Beta Service를 진행할 예정입니다.글. 데이터스튜디오팀 | 원충의
-
- 20.11.04
-
IT·보안
금융회사에서의 데이터변경 처리 절차(전자금융감독규정)
정보보호란 정보의 훼손·변조·유출 등을 방지하기 위한 기술적 관리 수단을 말하는데 우리가 보호해야 할 정보들은 수많은 곳에 논리적 또는 물리적 형태로 다양하게 저장되어 있습니다.대부분의 정보(데이터)는 Oracle, SQLserver, MySql과 같이 데이터를 속성과 데이터값으로 구조화하는 관계형 데이터베이스(Relational DataBase Management System)에 저장되는데 이러한 정보 등의 훼손·변조·유출을 방지하기 위해 많은 기업들은 시스템 접근, 차단, 감사, 모니터링등 각종 수단을 이용하여 보안 위험을 감지하고 감소, 억제하기 위한 대책을 마련하고 있습니다.이러한 대책 마련 활동들을 정보보안에서는 보안 통제(Security Control)라고 하는데 통제는 유형에 따라 기술적(논리적), 물리적, 관리적 통제 등 다양한 형태의 통제 방법이 있으며 정보보호에서 가장 눈여겨 봐야 할 것은 ISO / IEC 27001, NIST Special Publication 800-53에서 제시한 예방 통제(Preventive controls), 탐지 통제(Detective controls), 교정 통제(Corrective controls) 입니다. 이 세 가지는 시점에 의해 분류한 통제 유형으로 데이터베이스 보안에 대한 필요성을 보여주기도 합니다.예방 통제(Preventive controls)사전에 위험을 억제하기 위한 통제 방법으로 물리적 접근 통제와 논리적 접근 통제로 나뉜다. 데이터베이스 보안 관점에서의 논리적 접근 통제는 비인가자가 정보통신망을 이용하여 데이터베이스에 접근하는 것을 차단하는 것을 말하며 기술적 통제로는 방화벽, 인증, 암호화 등이 있으며 관리적 통제로는 보안정책 수립, 보안 서약, 직무 분리 등이 있습니다.탐지 통제(Detective controls)예방 통제를 우회하여 발생되는 행위를 통제하는 방법으로 보안 위협 및 침해 사고의 발생을 인지하는 시점을 말하고, 데이터베이스 보안 관점의 기술적 통제로는 감사 로그, 알람 발생 등이 있으며 관리적 통제 방법으로는 감사 및 모니터링 등이 있습니다.교정 통제(Corrective controls)탐지된 위협이나 원인을 식별, 분석하여 원상태로 조치하는 시점을 말하며 데이터베이스 보안 관점의 기술적 통제로는 감사 데이터 추적, 식별 관리적 통제로는 데이터 백업,복구 계획 수립 및 정책 계획 재수립 등이 있습니다.이처럼 정보보호에서 가장 처음 시행 되어야 할 통제 방법은 예방 통제이며 탐지 그리고 교정 순입니다. 무엇보다 중요한 것은 통제 유형에 대한 기술적, 관리적, 물리적 조치가 이루어져야 하는데, 신시웨이의 페트라 시리즈는 정보 보호에 있어 예방, 탐지, 교정 통제에 맞는 기술적, 관리적 조치를 제시하고 있습니다.앞서 말했듯이 데이터베이스에는 수많은 데이터가 저장되어 있고, 수 많은 데이터 중에서 개인정보를 가장 민감하게 관리 하고 있습니다. 우리나라 또한 2011년 9월 30일 「개인정보보호법」이 시행되면서 개인정보보호와 처리에 대한 가이드 라인을 제시하고 있습니다.그러나, 개인정보보호법에서의 「표준 개인정보 보호지침」을 준수하였다고 하더라도 개인정보 취급 형태, 업무 등에 따라 기술적, 관리적 조치 방안이 상이 할 수 있기 때문에, 데이터베이스 보안 솔루션 도입에 있어 다양한 Compliance에 대해 기술적, 관리적 조치를 할 수 있는지를 먼저 고려해야 합니다.2020년 5월 19일 전자금융거래의 법률관계를 명확히 하여 전자금융거래의 안전성과 신뢰성을 확보함과 아울러 전자금융업의 건전한 발전을 위한 기반조성을 함으로써 국민의 금융 편의를 꾀하고 국민경제의 발전에 이바지하기 위해 「전자금융거래법」을 일부 개정하고 2020년 8월 20일 시행 되었다.또한 「전자금융거래법」 및 시행령에서 금융위원회에 위임한 사항과 그 시행에 필요한 사항 및 다른 법령에 따라 금융감독원의 검사를 받는 기관의 정보기술부문 안전성 확보 등을 위하여 필요한 사항을 규정 하기 위해 2019년 1월 1일 「전자금융감독규정」을 시행 하였습니다.2013년 12월 3일 「전자금융감독규정」 제 27조(전산원장 통제), 제 28조(거래통제 등)의 “금융기관”을 “금융회사”로 개정하면서 전산원장을 취급하는 은행, 증권, 카드사등의 금융회사는 「전자금융감독규정」 제 27조, 제 28조에 의해 전산원장 변경을 위한 별도의 절차가 필요하며 변경 권한자를 지정하여 결재 승인을 득한 후 전산원장 변경이 실행 되어야 하며, 실행된 내용은 자동으로 기록하여, 그 행위를 추적할 수 있게 5년간 보관 하여야 합니다.제27조(전산원장 통제) ① 금융기관 또는 전자금융업자는 장애 또는 오류 등에 의한 전산원장의 변경을 위하여 별도의 변경절차를 수립·운용하여야 한다.② 제1항의 절차에는 변경 대상 및 방법, 변경 권한자 지정, 변경 전후내용 자동기록 및 보존, 변경내용의 정당여부에 대한 제3자 확인 등이 포함되어야 한다.③ 금융회사 또는 전자금융업자는 대차대조표 등 중요 자료의 계상액과 각종 보조부·거래기록·전산원장파일의 계상액에 대한 상호일치 여부를 전산시스템을 통하여 주기적으로 확인하여야 한다. <개정 2013. 12. 3.>④ 금융회사 또는 전자금융업자는 제3항에 따른 확인 결과 불일치가 발견된 때에는 그 원인 및 조치 내용을 전산자료의 형태로 5년간 보존하여야 한다. <개정 2013. 12. 3.>⑤ 금융회사 또는 전자금융업자는 이용자 중요원장에 직접 접근하여 중요원장을 조회·수정·삭제·삽입하는 경우에는 작업자 및 작업내용 등을 기록하여 5년간 보존하여야 한다. <개정 2013. 12. 3.>제28조(거래통제 등) ① 금융회사 또는 전자금융업자는 사고위험도가 높은 거래에 대하여는 책임자 승인거래로 처리토록 하는 등 전산시스템에 의한 이중확인이 가능하도록 하여야 한다. <개정 2013. 12. 3.>② 금융회사 또는 전자금융업자는 전산원장, 주요정보 또는 이용자 정보 등이 저장된 정보처리시스템에 대한 중요작업 수행 시 책임자가 이중확인을 해야 한다. <개정 2013. 12. 3.>금융회사들은 전산원장변경 요청시 데이터 변경에 대한 근거 문서를 토대로 문서를 작성 하게 되는데 일반적으로 현업의 실무자가 데이터 변경에 대한 근거 문서를 작성하여 IT 부서(IT 담당자)에 전달하면 IT 부서의 담당자는 전산원장변경 요청 SQL을 작성하여 해당 부서 팀장의 결재를 얻은 후 변경 권한자(DBA)에게 SQL 실행을 요청 하고 SQL 실행 후에는 제 3자에 의해 타당성을 검토를 실시합니다.데이터 변경 SQL 작성검증 및 데이터 변경 전/후 데이터 확인페트라 싸인(PETRA SIGN)의 데이터베이스 데이터 변경 기능은 커스텀마이징을 통해 기존에 사용하던 전자 결재 시스템의 근거 문서 연동을 제공 하고 데이터 변경 이력을 관리함으로써 「전자금융감독규정」을 준수하며 예방, 탐지의 기술적 통제 방안을 제공하고 악의적인 데이터 변경과 사용자의 실수를 사전에 예방할 수 있습니다.또한 저장된 전/후 데이터에 대한 암호화 지원으로 데이터의 기밀성을 보장 합니다.그 외에도 페트라 싸인(PETRA SIGN)에는 다음의 기능들이 있습니다. DB 접속 허가 요청서- 세션 차단 규칙에 의해 접속할 수 없는 DB에 대한 접속 권한을 얻기 위해 사용- 결재 문서 작성 시 접속 날짜 및 요일, 시간대, 접속 가능 횟수, 대상 DB 정보를 작성- 접속 횟수는 무제한으로 설정 가능SQL 실행 사전 요청서- SQL 거부 규칙에 의해 실행할 수 없는 SQL에 대한 실행 권한을 얻기 위해 사용- 결재 문서 작성 시 SQL 실행 날짜, 요일, 시간대, 대상 DB 정보와 실행 횟수, 실행하고자 하는 SQL 문장 혹은 SQL 타입을 설정함- 객체 정보로 결재 문서를 작성한 경우 DB 객체 정보 수집이 작업이 선행되어야 함- 실행 횟수는 무제한으로 설정 가능SQL 실행 소명서- SQL 사후 소명 혹은 SQL 즉시 소명 규칙이 설정된 경우 SQL 실행 사유를 남기기 위해 사용기타 보안 규칙 등록 요청서- DB 접속 통제, SQL 통제 이외의 규칙에 대한 권한을 얻기 위해 사용- 종결된 후 수동으로 보안 규칙을 수정해야 함마스킹 해제 요청서- 마스킹 규칙에 의해 마스킹 처리되어 조회되는 데이터를 마스킹 처리 없이 조회할 수 있는 권한을 얻기 위해 사용사용자 등록 요청서- PETRA ID를 발급받기 위해 사용하는 결재 문서- 본인이 직접 신청하거나 ID가 있는 사람이 대신 신청 가능- 본인 신청은 로그인 화면 사용자 신청 버튼을 통해 작성글. 기술지원 2팀 | 김홍경
-
- 20.11.02