AWS user 권한 주기 등...

김민준·2023년 7월 31일
0
  1. AWS 서비스란?
    프로그래머스

공부하며 느낀 점
참조한 사이트

1. AWS 서비스란?

클라우드 서버란?
온프레미스 서버는 매우 비싸기 때문에 대여를 해주는 서비스이다.
초기 비용와 서버구축을 넘기고 서비스만 론칭할 수 있다는 장점이 있다.

아마존의 AWS 서비스
지역 Region (데이터 센터가 한 개 이상 있는 곳) 마다 가용 영역 Available Zone (데이터 센터 개념)이 있다.
AZ는 고가용성 High Availability를 위해 늘린다.
즉, 재해, 정전, 장애 등으로 인해서 AZ 하나를 못쓰게 되어도 다른 AZ로 서비스를 보장하는 것이다.(= 서비스 가용성을 유지한다.)

IAM Identity Access Managemnet
AWS의 글로벌 서비스이다. 루트 어카운트 Root Account가 권한이 너무 많기 때문에 해킹 당했을 때의 위험이 너무 크다.

그래서 IAM은 그룹과 유저를 지정한다.
그룹 Group : 개발자/운영자와 같은 유저 권한의 종류
유저 User : 해당 AWS에서 로그인할 수 있는 권한, 독립적인 계정이 아니고, 해당 서비스에 접근하기 위한 것이다.
정책 Policy : 그룹과 유저에 권한을 조정하는 것.
항상 최소한의 권한 원칙 Least Privilege Principle 을 지키자

IAM 유저 추가하기
1. IAM 서비스에 접속한다.
2. 사용자 User - 사용자 추가 Add users 를 누르자

  1. User 명과 비밀번호, 권한을 주자

사용자 이름 : ID와 같은 것이다.
엑세스 권한 : 이것이 없으면 API로 접속한것과 같다.
사용자 생성 : 유저를 만든다.
암호 생성 : 임의 생성 또는 자동 생성한다.
새암호 생성 : 첫 로그인시 사용자가, 새로운 암호를 지정하게 해주는 방식이다.
새로운 팀원이 오기전에 미리, 사용자와 암호를 만들어놓고, 본인이 첫 로그인 할 때 사용하는 기능

전부 설정을 완료했으면 다음을 누르자

그룹 생성 Create Group 를 누르자.

그룹명과 주고 싶은 권한을 설정할 수 있다.
권한은 프리셋을 검색하여 사용하여도 되고, 직접 만들어도 된다.

원하는 그룹에 할당하고 다음으로 넘어가자

한 번 더 넘어가면 암호를 확인하고, 메일로 보내거나 CSV파일로 저장할 수 있다.

IAM에서 대시보드로 오면 오른쪽의 나의 루트 계정의 USER로 로그인 할 수 있는 링크를 준다.

첫 로그인을 하면 아까 설정한 대로 새로운 비밀번호를 정할 수 있다.
당연히 이전 비밀번호와 같은 비밀번호로는 바꿀 수 없다.

기본 닉네임은 랜덤 생성이며, 현재 admin 권한을 받은 user계정이기 때문에 루트 계정으로 가지 않고도 자신의 계정 별칭 Alias를 바꿀 수 있다.

요상하게도 대문자는 안된다고 한다.

이제 이상한 숫자 대신에 자신이 정한 별칭으로 user 로그인 할 수 있다,

프로그래머스

하루에 두개씩 푸는데 200개는 아무리봐도 타산이 안맞아서 0레벨 정답률 낮은 것부터 + 1레벨 정답률 높은 것 부터로 가기로 했다.

약수의 합

%를 사용하면 될 것같다.

function solution(n) {
  var answer = 0;

  let i = 1;

  while (i <= n) {
    if (n % i === 0) {
      answer += i;
    }
    i++;
  }

  return answer;
}

멍청하게 i가 아니라 n%i 를 더할려고해서 자꾸 0이 나왔었다. ㅋㅋ

평행

function solution(dots) {
  var answer = 0;
  let num = 0;
  const n = dots.length;

  var gradients = [];

  let xAxis;
  let yAxis;

  while (num < n) {

    for (let i = num+1 ; i < n; i++ {
      xAxis = dots[i][0] - dots[num][0];
      yAxis = dots[i][1] - dots[num][1];
      gradient = yAxis / xAxis;
      gradients.push(gradient);
    }
    num++;
  }

  const getElCount = (arr) =>
    arr.reduce((ac, v) => ({ ...ac, [v]: (ac[v] || 0) + 1 }), {});

  const test = getElCount(gradients);


  const valuesOfTest = Object.values(test);
    
  for (let i = 0; i < valuesOfTest.length; i++) {
    if (valuesOfTest[i] > 1) {
      return (answer = 1);
    }
  }

  return answer;
}

아무래도 1-2, 2-3 이 기울기가 같으면 0을 반환해야하는 것같다.

for (let i = num + 1; i < n; i++) {
for (let i = num + 2; i < n; i++) {
이렇게 바꾸니 12 이후에 일부 정답이 나왔지만, 이전에 전부 정답이던게 일부 오답이 되었다 또 조건이 있는 듯하다.

i+1 로 시작하는 직선들을 거르는 기능을 추가해야겠다.

그런데 어떻게 하지? ㅋㅋㅋㅋㅋㅋ

function solution(dots) {
  for (let i = 0; i < dots.length - 1; i++) {
    for (let j = i + 1; j < dots.length; j++) {
      const slope1 = calculateSlope(dots[i], dots[j]);
      for (let k = 0; k < dots.length - 1; k++) {
        for (let l = k + 1; l < dots.length; l++) {
          if (i !== k && i !== l && j !== k && j !== l) {
            const slope2 = calculateSlope(dots[k], dots[l]);
            if (slope1 === slope2) {
              return 1;
            }
          }
        }
      }
    }
  }
  return 0;
}

function calculateSlope(point1, point2) {
  return (point2[1] - point1[1]) / (point2[0] - point1[0]);
}

// ij 의 기울기를
// kl 의 기울기와 비교한다.

// ij는 고정하고 kl을 l을 1씩 증가하며 비교한다.
// 다 비교하면 kj를 1씩 증가하며 반복한다.

// 점 k는 i여도 j여도 안된다.
// 점 l도 i여도 j여도 안된다.

이렇게 푸는게 아닌것같은데 아무튼 풀어냈다...

다른 사람의 풀이

function solution(dots) {
    if (calculateSlope(dots[0], dots[1]) === calculateSlope(dots[2], dots[3]))
        return 1;
    if (calculateSlope(dots[0], dots[2]) === calculateSlope(dots[1], dots[3]))
        return 1;
    if (calculateSlope(dots[0], dots[3]) === calculateSlope(dots[1], dots[2]))
        return 1;
    return 0;
}

function calculateSlope(arr1, arr2) {
    return (arr2[1] - arr1[1]) / (arr2[0] - arr1[0]);
}

음... 위에 내가 올린 사진을 그대로 구현한거긴한데
가짓수를 하나하나 다 구현한거라서 좋지는 않아보인다.

(1,2)와 (2,3), (2,4)는 서로 맞다아 있으므로 제외하고
(1,4)역시 시작점이 같기 때문에 뺀다.
(위의 두 조건 모두 기울기가 같으면 포함 되어버리기 때문이다.)
그럼 (1,2)와 (3,4) 이어야한다.
마찬가지로 (1,3) 과 (2,4)
그리고 (1,4) 와 (2,3)이 남는다.

공부하며 느낀 점

  1. 맨날 루트 계정으로 로그인 하면서 뭔지 몰랐는데 확실히 알게 되어서 좋았다.
    루트 계정은 결제를 포함한 모든 권한을 가지고있고, 유출 시 위험이 크기 때문에, 유저는 루트 계정에 귀속되어있고 일부 권한만 가진 접속/사용 권한을 만들어 주는 것이다.

  2. 저번주에 하다가 실패한 알고리즘 문제의 경우, 점 하나하나의 좌표가 아니라 점 자체에 집중하니 문제가 풀렸다.
    컴퓨터 언어로 쓰지 않았을 뿐이지, 이런 해결 방식 자체도 객체지향인 것 같다.

참조한 사이트

자바스크립트 배열의 합계, 평균 구하기
자바스크립트 배열 합 구하는 방법

profile
node 개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 31일

많은 도움이 되었습니다, 감사합니다.

답글 달기

관련 채용 정보