본문 바로가기

전체 글

[Spring Security] @PreAuthorize agent skills를 찾아보다가 Spring Security에 대한 Skills를 읽어보게 되었는데 처음 보는 구문이 나와 찾아보게되었다. @PreAuthorize("hasRole('ADMIN')") @GetMapping("/users") public List listUsers() { return userService.findAll(); } @PreAuthorize("@authz.isOwner(#id, authentication)") @DeleteMapping("/users/{id}") public ResponseEntity deleteUser(@PathVariable Long id) { userService.delete(id); return ResponseEntity.n.. 더보기
SW마에스트로 17기 최종합격 후기 23년에 처음 알게된 뒤부터 정말 하고 싶었던 SW 마에스트로에 합격했다. 이번에 SW 마에스트로를 준비하면서 기록해두는 게 많이 도움이 된다고 느꼈고, 나 또한 다른 합격 후기를 통해 도움을 많이 받았기에 합격 후기에 대해 공유해보려고 한다. 서류사실 SW 마에스트로에서 서류에서 탈락하는 경우는 거의 없다고 알고있어서 막연하게 작성했던 것 같다.항목 중 "어떠한 프로젝트를 수행하고 싶은지, 이를 위한 계획과 목표"에 대해 작성하는 부분이 있었는데, 당시 하고 싶은 아이디어가 생각나지 않아 아이디어를 적은 것이 아니라, 어떤 식으로 프로젝트를 진행할 지 전반적인 나의 계획을 작성했다. 나중에 심층 면접 때 면접관님이 이렇게 적은 사람은 본 적이 없는 것 같다고 의아해하셨어서 다시 돌아간다면, 대단하지 않.. 더보기
2025 SW개발보안 경진대회, 소개딩 후기(최우수상) 작년 한국인터넷진흥원에서 주관하는 소프트웨어 개발보안 시큐어코딩(소개딩) 경진대회에 참여해 최우수상을 수상했다.학교 동기분께서 대회정보를 공유해주어 처음 대회를 알게되었고, 이전에 프로젝트를 함께 했었던 동기들에게 연락을 해 최종적으로 프론트 1명과 백엔드 2명으로 총 3인팀으로 대회에 참여했다. 처음에는 대회명이 개발보안 시큐어코딩이어서 보안 관련된 프로젝트로 진행해야할 줄 알고 걱정했지만, 대회 설명회를 통해 이 대회는 보안을 고려한 안전한 소프트웨어 개발이 주제임을 알게되었다.웹 서비스 관련해 여러 프로젝트를 진행했었고, 보안 관련해서도 저번 학기 학부연구생으로 활동하며 보안 관련 논문도 여럿 읽어본 경험이 있어 이번 대회가 좋은 기회라고 생각했다. 대회는 예선(8팀)-본선(3팀)-결선(등수결정)으.. 더보기
AWS S3: 보안관점에서 Presigned PUT vs POST S3를 사용하게 되면서 업로드 시 서버에서 Presigned URL을 생성해 클라이언트로 반환한 뒤 클라이언트가 URL로 PUT요청을 통해 파일을 업로드하도록 구현해보았다. public PresignedPutObjectRequest presignPut(String bucket, String key, Duration ttl) { PutObjectRequest putObjectRequest = PutObjectRequest.builder() .bucket(bucket) .key(key) .build(); PutObjectPresignRequest presignRequest = PutObject.. 더보기
AWS S3: Post Presign Url이 만료되지 않는 문제 문제AWS PresignedUrl로 업로드 시 policy에 expiration을 설정해 url 만료 시간을 지정했지만 만료시간이 지났음에도 업로드 되는 문제가 발생했다.해결policy를 디코딩해본 결과, expiration이 다음과 같았다.2026-01-20T12:39:36.031377839Z나노초(9자리)까지 설정되었기때문에 발생한 문제였다. //policy.put("expiration", DateTimeFormatter.ISO_INSTANT.format(expiresAt)); policy.put("expiration", expiresAt.truncatedTo(ChronoUnit.MILLIS).toString());밀리초 단위(3자리)까지만 표기하도록 수정하니, 유효기간이 제.. 더보기
AWS: IAM Billing 읽기 권한 IAM User에게 위처럼 같이 두 개의 권한을 주어도 Billing 메뉴에 접근할 수가 없다. 그 이유는, Root가 Global 설정을 해줘야 하기 때문이며, 설정하는 방법은 다음과 같다: 1. 루트 계정 로그인2. 오른쪽 사용자 이름 클릭3. 계정 클릭4. 결제 정보에 대한 IAM 사용자 및 역할 액세스 활성화 이제 결제 관련 메뉴 열람이 가능해진다. 더보기
Blue-Green Deployment (자동화) [아직 배포용 클라우드 계정이 준비되지 않아 GitHub Actions 검증은 되지 않은 상태입니다. 다만, AWS CLI의 경우 문제 없음을 확인하였습니다.]이 글에서는 AWS ALB와 두 타겟그룹(Blue/Green)에서 무중단 배포를 자동화하는 방법에 대해 다룬다.CI/CD 자동화는 GitHub Actions를 사용하며, 각 타켓그룹에는 인스턴스가 1개씩만 있다고 가정한다.전체 흐름빌드 & 푸시Github Actions로 prod 브랜치 push 시 도커로 애플리케이션을 빌드해 이미지를 DockerHub에 푸시한다.현재 라이브 색상 확인ALB 리스너가 Blue/Green 중 어디로 트래픽을 보내는지 조회한다.비활성 타겟그룹에 배포 진행→ 로컬 스모크 체크(curl -fsS http://localho.. 더보기
AWS: IAM 사용자 생성 깃헙 액션 배포 시 ALB Listener의 대상그룹 변경을 위한 최소한의 권한을 가진 IAM 사용자를 생성해보려고 한다.내 워크플로우에서 필요한 권한은 다음과 같다:elasticloadbalancing:DescribeListenerselasticloadbalancing:ModifyListenerelasticloadbalancing:DescribeTargetHealth우선 다음 화면에서 사용자 이름을 입력하자:GitHub Actions를 통해서만 명령을 실행할 것이기 때문에 콘솔 액세스 권한은 주지 않는다. 2단계: 권한 설정에서, 직접 정책 연결에서 정책 생성을 선택한다.이후 JSON을 선택해 다음 JSON을 붙여넣는다.과 는 실제 값으로 넣어야한다.{ "Version": "2012-10-17", .. 더보기