히녹스 위치
나오는 아이템들
- 왕가의 창
- 왕가의 검
연관 퀘스트
- WANTED 히녹스
최근 OKR 도입 사례가 많아지면서 OKR의 대표적인 성공 사례로 존 도어가 구글에서 확장 시킨 OKR 사례들을 알 수 있었는데 OKR 파워
한번 정리를 하면서 OKR을 이해 해보고자 한다.
OKR은 Objective + Key Result로 나눈다.
조직 전체의 목표와 팀의 목표가 Align 되려면 목표는 ‘오르내려야’ 한다. 오르내리는 과정에서 조직 전체의 기대와 팀의 도전 가운데 목표 합의가 이루어지게 된다.
‘3개월의 OKR을 수립했다.’ 라는 뜻은 우리는 앞으로 3개월 동안 다른것은 못해도 이것 만큼은 달성 할 것이다.'라는 의미가 들어가 있다. 집중할 일의 우선순위를 정했다는 뜻을 내포한다.
집중할 일(KR)의 수준도 측정가능해야 한다는 것이 원칙이다. ('채용 많이하기'가 아니라 ‘채용을 3명하기’가 좋은 예)
만약 OKR 외의 일이 들어오게 된다면 OKR에 집중하기 위한 대안이 수립되어야 한다.
조직 전체의 목표가 팀의 목표를 질적(정성), 양적(정량)으로 연결되면,
구글은 분기 마지막 4주를 치열하게 목표를 세우고, 합의하는데 사용하고 있다고 함.
각 팀의 OKR은 서로 독립적이어야 한다. 그래야 성과의 책임을 다른팀에 돌릴 수 없기 때문이다. 하지만 유기적으로 유기적으로 연결되어 있지 않은 조직은 없으므로 각팀의 OKR 진도가 투명하게 지속적으로 공유 되어야 한다. 책임은 투명성에 기반하고 있다.
피드백은 매주 실행계획을 피드백하고 다음 하준의 전략을 잘 수립하는 것이 OKR의 핵심이다. 피드백을 할 때는 CFRConversation-Feedback-Recognition 의 원칙을 지켜야 한다.
구성원들이 조직 내 사명(존재 목적)과 비전(단기/중기/장기 목표)를 정확하게 인지 할 경우, OKR을 한방향으로 설정하는데 도움이 된다.
구성원들이 서로 인정과 격려하는 문화가 존재하는 경우 OKR 진척을 촉진할 수 있다.
OKR 방식으로 일하기 위해서는 구성원들이 자발적으로 일하는 환경을 만들어 주는 것이 필요하다. 결국, OKR을 수행하는 사람은 실무자이기에 실행자에게 주도권을 넘겨 줘야 한다.
피드백 역량이란 구성원들이 진행하고 있는 업무에 대해서 스스로 피드백하고 행동을 발전시키는 것을 말한다.
수시로 피드백 하는 것이 일상화 되어 있다면 개인의 성장을 촉진할 뿐만 아니라 OKR의 성과도 달성할 수 있다.
OKR의 목표가 한 부서만의 목표가 아니라 전사적 목표로 인지될 필요가 있다. 그런 기업의 특징은 성과 중심으로 프로젝트에 따라 역할을 주고 부서간의 협업이 원활하다는 것을 뜻한다.
OKR의 중요 요소 중 하나가 투명한 정보 공유
이다. 모든 팀의 OKR이 실시간으로 투명하게 노출되고 필요한 정보들이 수시로 공유 될 때 OKR의 실행속도도 빨라질 수 있다.
경영자 또는 리더만 OKR을 열심히 낸다고 해서 OKR이 조직내에 정착되지는 않는다. OKR이 조직 내 체내화 되기 위해서는 조직 전체가 함께 OKR 도입에 관심을 가지고 힘을 써야 한다.
투명한 정보 공유
는 OKR의 중요한 요소 중 하나로 구성원 모두가 진행하고 있는 OKR 과업에 대해 실시간으로 소통하려는 자세를 가져야 한다.To-Do
를 목표로 세우는 것이 아닌 피드백을 통해 지난 실행으로 배우고, 발견한 지식을 반영하여 발전되는 실행 계획을 세워야 한다.조직화
다. 조직화는 일, 사람, 기간으로 구성된다. 누가 할 것인지 그리고 언제까지 할 것인지를 정하고 실행계획에 따라 실행에 옮긴다.경영자는 ‘공감대 형성’ 임원은 ‘방향성 제시’ 팀장은 ‘OKR 실행관리’ 구성원은 ‘실행' 이 중요하다.
좋은 Objective 예시 | 나쁜 Objective 예시 |
---|---|
- 화장품 업계의 변종이 된다. | - 매출 1,000억 |
- 리오더 로켓 대응! | - 출고 시스템 구축 |
- 고객이 또다시 찾고 싶은 상품 만들기 | - 거래처 수 1,000개 |
Objective를 잘세웠는지 점검하는 5가지 질문
- 전사 목표를 달성하는 데 도움이 되는가?
- 회사의 성장에 기여하는 목표인가?
- 팀(자신)에게 영감을 주는 목표인가?
- 기간이 정해져 있는 목표인가?
- OKR이 3개월 후 기대하는 팀(자신)의 모습인가?
좋은 Key Result 예시 | 나쁜 Key Result 예시 |
---|---|
- 어플 다운로드 45% 증가 | - 부진한 재고 관리하기 |
- 앱 로딩시간 2초에서 0.5초로 줄이기 | - 바이어 관리하기 |
- 고객만족도 90점 이상 | - 팀워크 강화 |
- 4분기 매출 50억 달성 | - 출고 누락 없도록 서포트 |
- 신규거래처 20개 계약 체결 | - 거래처와 관계를 강화하도록 매주 연락하기 |
Key Result를 잘세웠는지 점검하는 5가지 질문
- 결과값이 구체적이고 명확한가?
- 행동이 아닌 결과 중심으로 작성했는가?
- 달성하기가 너무 쉽거나 불가능한 KR이 아닌 도전적인 KR로 설정했는가?
- 다른 부서의 노력과 상관없이 독립적으로 측정이 가능한가?
- KR을 달성하면 O가 달성되는가?
KPI가 사전적 예고 지표라면 KR은 결과적 최종적 지표를 의미한다.
(예)
Obective : ‘3개월동안 고객들로부터 사랑받는 설렁탕집’, ‘인근 상권에서 가장 유명한 설렁탕집 되기’KR : 3개월간 누적 판매량, 프랜차이즈 신청하러 온 가맹점 신청자의 수, 최종적인 영업이익 등
KPI : 원가율, 대기시간, 고객만족도, 응답시간, 객단가 등
OKR로 성과 내는 25가지 방법 OKR 파워
책을 토대로 작성되었습니다.AWS Lambda에 코드를 업로드할때 numpy, pandas
와 같이 C 또는 C++을 기반으로 한 라이브러리가 포함되어 있다면 Lambda는 이 라이브러리를 Import하지 못합니다.
⚠️ pandas 라이브러리 설치시에는 NumPy가 같이 설치됩니다.
Please note and check the following:
* The Python version is: Python3.9 from "/var/lang/bin/python3.9"
* The NumPy version is: "1.23.4"
and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.
Original error was: No module named 'numpy.core._multiarray_umath'
Unable to import required dependencies:\nnumpy: \n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n * The Python version is: Python3.9 from \"/var/lang/bin/python3.9\"\n * The NumPy version is: \"1.23.4\"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: No module named 'numpy.core._multiarray_umath'\n",
따라서 Lambda Layer에 네이티브 코드 라이브러리가 포함되어 있는 경우 바이너리가 Amazon Linux와 호환되는 시스템을 사용하여 이러한 라이브러리를 컴파일하고 빌드해야 합니다.
pip
를 활용하여 라이브러리를 mac에서 패키지를 다운로드 받아보면 다음과 같이 mac os기반의 패키지를 받는 것을 확인 할 수 있습니다.
모든 패키지가 위와같은 문제가 발생하는 것은 아니지만, 가능하면 OS 호환성을 고려하여 패키지를 설치하는 것이 좋습니다.
이러한 문제를 해결하기 위해 AWS EC2에서 Amazon Linux
인스턴스를 할용할 수 있지만, Docker
를 활용하여 간단하게 Lambda Layer 패키지를 만들 수 있습니다.
먼저 Docker 가 설치되어 있지 않다면, 아래 링크를 참고하여 Docker를 설치합니다.
Docker 설치하기
Amazone Linux2 실행합니다. docker images
로 image가 없으면 해당 iamge를 pull 한 후 실행됩니다.
docker run -it amazonlinux:latest
-it
옵션은 컨테이너를 종료하지 않은채로 터미널 작업을 하기 위해서 사용합니다.
cat /etc/os-release
를 입력하여 결과를 확인합니다.
#결과
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
Python 3.9, 3.8 은 Amazon Linux 2 런타임 환경만을 지원합니다.
Lambda 런타임 확인하기 ➔
먼저 파이썬 설치를 위해 GCC
컴파일러와 같은 필수 개발라이브러리를 먼저 설치 합니다.
yum -y groupinstall "Development Tools"
yum install -y openssl-devel bzip2-devel libffi-devel
yum install -y wget
파이썬 3.9 다운로드 페이지로 이동하여 파이썬 3.9를 설치합니다.
cd /home
# Download python 3.9
wget https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz
# 압축풀기
tar xzf Python-3.9.15.tgz
# python 빌드 및 설치
cd Python-3.9.15
./configure --enable-optimizations
make altinstall
make altinstall
기본 파이썬 바이너리 파일위치 /usr/bin/python
교체를 방지하는 데 사용됩니다.
설치된 Python 3.9는 /usr/local/bin
디렉토리에 설치됩니다. 기본 Python 버전을 덮어쓰지 않았으므로 설치된 버전 확인을 위해서 다음과 같이 실행해야 합니다.
파이썬이 제대로 설치되었는지 버전을 확인합니다.
python3.9 -V
# 결과
Python 3.9.15
애플리케이션 패키지가 포함시킬 수 있는 env
라는 가상환경을 생성합하고 실행합니다.
python3.9 -m venv env
source env/bin/activate
# 결과
(env) bash-4.2#
Amazon Linux2 기반의 파이썬 3.9 개발환경 구성이 완료되었습니다. 이제 lambda layer 패키지를 생성하겠습니다.
requirement.txt
를 갖고 전체 패키지 파일을 생성할 수 있지만 패키지 설치방식은 모두 동일 하므로 여기서는 Numpy 패키지를 가지고 Layer를 생성해보겠습니다.
pip
로 numpy 패키지를 다운로드 하게 되면, 로컬 터미널 환경에 맞는 패키지를 다운로드 받게 됩니다. 따라서 Amazon Linux용으로 패키지를 다운로드 받아야만 종속성의 오류가 발생하지 않습니다.
https://pypi.org/project/numpy/#files 에서 파이썬3.9해당하는 Amazon Linux 버전의 .whl
파일을 다운로드 합니다.
# 패키지용 디렉토리로 이동
mkdir python && cd python
# NumPy 다운로드
wget https://files.pythonhosted.org/packages/92/49/127e40f3f468a9bbce1fe69e97d0f0db524621960e0adc51a977298eb49c/numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
다운로드 받은 파일은 압축을 풀고, 받은 파일은 삭제합니다.
# 압축 풀기
unzip numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
# .whl 파일 삭제
rm -rf numpy-1.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
상위 폴더로 이동하여 파이썬 패키지로 압축합니다.
zip -r python.zip python/
# 결과
adding: python/ (stored 0%)
adding: python/soupsieve/ (stored 0%)
adding: python/soupsieve/css_match.py (deflated 79%)
adding: python/soupsieve/css_parser.py (deflated 78%)
adding: python/soupsieve/py.typed (stored 0%)
adding: python/soupsieve/util.py (deflated 61%)
(중략)
파이썬 패키지로 압축 시에는 python/라이브러리로 생성되어져야 람다에서 라이브러리를 임포트 할 수 있습니다.
Docker 컨테이너에서 로컬로 패키지를 복사 한 후, Lambda Layer를 생성합니다.
# 컨테이너와 파일의 위치를 :로 구분하고 복사할 곳의 경로를 적습니다.
docker cp con:/root/data.txt /home/dst/
Layer 업로드는 Lambda Layer 공통라이브러리 등록하기 ➔ 에서 확인합니다.
Lambda 함수에서 호출할 라이브러리에 대한 구성이 마쳤습니다.
이제 간단한 Numpy
호출 예제를 활용하여 테스트 해보겠습니다.
함수를 생성한 후 스크롤을 내려 Add a Layer
버튼을 클릭하고, 만들어둔 레이어를 추가합니다.
샘플 코드를 입력하고 Deploy
버튼을 클릭하고, Test
를 실행합니다.
import json
import numpy as np
def lambda_handler(event, context):
a = np.arange(6)
a2 = a[np.newaxis, :]
# TODO implement
return {
'statusCode': 200,
'body': a2.shape
}
결과
아래의 return 결과가 나왔으면 정상적으로 임포트가 완료된 것입니다.
Response
{
"statusCode": 200,
"body": [
1,
6
]
}
(중략)
(AWS STS) Python Account Assume Role 임시 자격 증명 (0) | 2024.10.04 |
---|---|
Mac OS에서 AWS Cli 설치하기 (0) | 2022.07.22 |
[AWS] AWS Configure 여러 계정 사용하기 (0) | 2022.03.01 |
AWS cli로 S3 버킷 다루기(파일 업로드,삭제, 동기화) (0) | 2021.09.04 |
AWS cli 보안자격증명(aws configure) (0) | 2021.09.04 |
Homebrew로 Docker를 설치하는 방법을 알아보겠습니다.
Homebrew는 macOS용 패키지 관리자로 Mac용 소프트웨어를 설치할 수 있습니다. 편리하고 사용하기 쉽기 때문에 대부분의 Mac 사용자는 Homebrew로 패키지를 관리하고 있습니다.
Homebrew Cask는 Mac에 GUI 소프트웨어를 설치하기 위한 Homebrew 확장 패키지입니다. Mac의 Docker는 GUI 도구이므로 Homebrew Cask
를 사용하여 설치해야 합니다.
brew install --cask docker
로 Docker를 설치합니다.
설치를 완료한 후 application 에서 docker를 실행하면 설치가 완료 됩니다.
docker --version
# 결과
Docker version 20.10.20, build 9fdeb9c
docker-compose --version
# 결과
Docker Compose version v2.12.0
(윈도우11) 노트북 커버 덮고 외부 디스플레이 사용하기 (0) | 2024.01.31 |
---|---|
맥(Mac)에서 소스트리 출력하기 (0) | 2022.07.21 |
[카카오 메일]Windows10 메일 연결 (0) | 2021.08.13 |
Mac OS에서 AWS CLI 버전 2를 설치하는 방법에 관해 알아보겠습니다.
Mac은 Homebrew가 있어 매우 편리하게 설치할 수 있습니다.
명령줄에서 다음 단계에 따라 Linux에 AWS CLI를 설치합니다.
# aws cli 설치
brew install awscli
# 설치 경로 확인
which aws
# 결과
/usr/local/bin/aws
# 버전확인
aws --version
# 결과
aws-cli/2.7.17 Python/3.10.5 Darwin/21.5.0 source/x86_64 prompt/off
🗂 아래 링크에서 설치 방법을 참고하세요.
(AWS STS) Python Account Assume Role 임시 자격 증명 (0) | 2024.10.04 |
---|---|
[AWS] AWS Lambda Layer numpy C-extensions failed (0) | 2022.11.07 |
[AWS] AWS Configure 여러 계정 사용하기 (0) | 2022.03.01 |
AWS cli로 S3 버킷 다루기(파일 업로드,삭제, 동기화) (0) | 2021.09.04 |
AWS cli 보안자격증명(aws configure) (0) | 2021.09.04 |
tree
는 소스 구조를 트리 형태로 보여주는 명령어입니다.
Mac에서는 tree
명령어가 설치되어 있지 않습니다.
Homebrew를 이용해서 tree
를 설치합니다.
brew install tree
tree
명령어를 입력하여 결과를 확인합니다.
.
├── README.md
├── config.py
├── environment.yml
├── py
│ ├── __init__.py
│ ├── filter.py
│ ├── forms.py
│ ├── models.py
│ ├── static
│ │ ├── bootstrap.min.css
│ │ ├── bootstrap.min.js
│ │ ├── jquery-3.6.0.min.js
│ │ └── style.css
│ ├── templates
│ │ ├── answer
│ │ │ └── answer_form.html
│ │ ├── auth
│ │ │ ├── login.html
│ │ │ └── signup.html
│ │ ├── base.html
│ │ ├── form_errors.html
│ │ ├── navbar.html
│ │ └── question
│ │ ├── question_detail.html
│ │ ├── question_form.html
│ │ └── question_list.html
│ └── views
│ ├── answer_views.py
│ ├── auth_views.py
│ ├── main_views.py
│ └── question_views.py
└── py.db
(윈도우11) 노트북 커버 덮고 외부 디스플레이 사용하기 (0) | 2024.01.31 |
---|---|
[MAC] Mac에서 docker 설치하기 (0) | 2022.11.05 |
[카카오 메일]Windows10 메일 연결 (0) | 2021.08.13 |
| 해당 포스트는 맥북에서 설정하였습니다.
GitHub을 사용하다 보면 업무용계정과 개인용계정을 따로 사용해야 하는 경우가 발생할 수 있습니다.
두 개 이상의 계정을 활용해야 할때 설정하는 방법입니다.
기존에 등록되어 있는 키체인 정보를 삭제합니다.키체인 접근
앱에서 gihub.com
에 등록된 정보를 삭제합니다.
개인계정과 업무계정에 사용할 ssh key
를 생성합니다.
생성은 .ssh
디렉토리에서 생성합니다. .ssh
디렉토리가 없으면 디렉토리를 생성합니다.
# .ssh 디렉토리 이동
cd ~/.ssh
# ssh key 생성
ssh-keygen -t rsa -b 4096 -C "<github 계정 email주소>"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/collabo/.ssh/id_rsa): #생성할 파일명 입력
Enter passphrase (empty for no passphrase): # Enter
Enter same passphrase again: # Enter
id_rsa_private, id_rsa_private.pub
와 업무용 key id_rsa_work, id_rsa_work.pub
의 생성결과를 확인 합니다.ssh-add --apple-use-keychain id_rsa_private
ssh-add --apple-use-keychain id_rsa_work
로컬에서 생성한 공개키를 복사하고 pbcopy < ~/.ssh/id_rsa_work.pub
github에 등록합니다.
Settings
를 선택한다.Settings
의 좌측 메뉴에서 SSH and GPG keys - New SSH Key
메뉴를 클릭하고 복사한 키를 붙여 넣습니다.id_rsa_work.pub
복사한 key~/.ssh
디렉터리에 config 파일이 존재하는지를 확인하고 없다면 새로 생성합니다.
github.com에 대한 접속 정보를 아래와 같이 설정해 줍니다.
# private account
Host github.com-private
HostName github.com
User private # github 계정 이름
IdentityFile ~/.ssh/id_rsa_private # 비밀키 파일
# work account
Host github.com-work
HostName github.com
User work # github 계정 이름
IdentityFile ~/.ssh/id_rsa_work # 비밀키 파일
[SSH 등록 테스트]
등록한 키 값별로 ssh -T git@github.com-work
입력하여 아래 문구가 출력되면 정상입니다.
You’ve successfully authenticated, but GitHub does not provide shell access.
※ 개인용도 동일하게 테스트 합니다.
GitHub에서 SSH URL로 clone 받거나 이미 Remote가 지정된 경우 다음과 같이 변경할 수 있습니다.
SSH Config 구성 시 HostName을 github.com-<구분자>
로 지정하였으므로 호출 시 동일하게 구성하여야 합니다.
git clone git@github.com-work:<저장소URL>.git
git remote set-url origin git@github.com-private:<저장소URL>.git
(GitHub) Pull Request 템플릿 만들기 (0) | 2024.04.14 |
---|
Window에 설치된 Python 가상환경을 Linux로 옮겨보겠습니다.
Anaconda 가상환경은 운영체제끼리는 같아야 yml
기반으로 가상환경 생성 과정에서 에러가 생기지 않습니다.
Conda does not check architecture or dependencies when installing from a spec file. To ensure that the packages work correctly, make sure that the file was created from a working environment, and use it on the same architecture, operating system, and platform, such as linux-64 or osx-64.
빌드 버전의 OS종속성을 제거하기 위해 --no-build
옵션을 사용하여 가상환경을 추출합니다.
conda env export -n "가상환경이름" --no-build > envrionment.yml
Linux 환경에서 Anaconda 가상환경을 생성합니다.
conda create -n "가상환경이름" python=3.9
생성한 가상환경을 추출한 environment.yml
로 업데이트 해줍니다.
conda env update -n "가상환경 이름" -f environment.yml
가상환경 업데이트를 하면 다음과 같이 찾을 수 없는 패키지가 확인 됩니다.
Output:
Solving environment: failed
ResolvePackageNotFound:
- vs2015_runtime=14.27.29016
- wincertstore=0.2
- vc=14.2
해당 항목들을 anaconda 패키지 리스트에 확이하면, 다음과 같이 Window OS 종속된 항목으로 Linux에 지원되지 않는 패키지 임을 확인 할 수 있습니다.
window에만 설치 가능한 패키지를 삭제하고 다시 가상환경을 업데이트 합니다.
conda env update -n "가상환경 이름" -f environment.yml
(Python) Streamlit 기본 (0) | 2024.03.03 |
---|---|
PDF to Excel in Python (2) | 2024.01.28 |
PowerShell Anaconda 설정하기 (0) | 2022.03.01 |
파이썬 시작하기(3) - Pycharm 설치(Professional 버전) (0) | 2021.09.10 |
파이썬 시작하기(2) - Anaconda 가상환경 생성 (0) | 2021.09.09 |
Bastion 구성은 Azure CLI
를 활용하여 구성하였습니다.
Azure Bastion은 Public IP 주소를 통한 노출 없이 VM(가상 머신)에 대한 더 안전하고 원활한 RDP(원격 데스크톱 프로토콜) 및 SSH(Secure Shell) 프로토콜 액세스를 제공하는 완전 관리형 서비스입니다.
⚠ 보호된 VM과 Azure Bastion 호스트는 서브넷이 다르지만 동일한 가상 네트워크에 연결되어 있습니다. |
---|
1. 사용자는 Azure Portal에 접속하여 연결하려는 VM을 선택합니다.
2. Azure Portal에서 대상 VM을 호스트하는 가상 네트워크를 통해 Azure Bastion에 연결 합니다.
3. Azure Bastion이 대상 VM에 대한 연결을 시작합니다.
4. RDP 또는 SSH 세션이 관리자 콘솔의 브라우저에서 열립니다. Azure Bastion은 사용자 지정 패키지를 통해 세션 정보를 스트리밍합니다. 이러한 패키지는 TLS로 보호됩니다.
5. VPC Peering을 통해 중앙 집중식 허브 가상 네트워크에 구성된 Azure Bastion 호스트를 통해 추가 베스천 호스트를 배포하지 않고도 VM에 연결하는 데 사용할 수 있습니다.
Azure Bastion을 사용하면 RDP/SSH를 인터넷에 직접 공개하지 않아도 됩니다. 대신 Secure Sockets Layer(SSL)를 사용하여 안전하게 Azure Bastion에 연결하고 Private IP를 사용하여 VM에 연결할 수 있습니다.
az group create --name "myBastionRG" -l "Korea Central"
생성된 리소스 그룹 myBastionRG
에 키 자격 증명 모음을 만듭니다.
az keyvault create --name "colla-credential-vault" --resource-group "myBastionRG"
❗ Vault name은 Globaly Unique 해야 하고, 이름은 문자로 시작하고 0 |
---|
서버 접속에 사용할 ssh Key를 생성 합니다.
생성된 key는 ~/.ssh/
경로 안에 public key, private key가 생성되게 됩니다.
ssh-keygen -t rsa
Azure KeyVault에 서버 접근에 필요한 private key를 등록 합니다.
az keyvault secret set --vault-name "colla-credential-vault" --name "privatekey" --file ~/.ssh/id_rsa
VM과 함께 사용할 Key Vault의 액세스 정책을 업데이트 합니다.
az keyvault update -n colla-credential-vault -g myBastionRG --set properties.enabledForDeployment=true
가상 네트워크는 Azure에서 프라이빗 네트워크의 기본 구성 요소입니다. 이 네트워크를 사용하여 VM과 같은 Azure 리소스가 서로 인터넷을 통해 안전하게 통신할 수 있습니다.
가상 네트워크 환경과 VM연결을 위한 Subnet을 구성합니다.
az network vnet create --resource-group myBastionRG \
--name MyVnet \
--address-prefixes 10.1.0.0/16 \
--subnet-name MySubnet \
--subnet-prefixes 10.1.0.0/24
기존 가상 네트워크에서 AzureBastionSubnet이라는 서브넷을 추가합니다.
az network vnet subnet create \
--resource-group myBastionRG \
--vnet-name MyVnet \
--name AzureBastionSubnet \
--address-prefixes 10.1.1.0/24
Azure Bastion의 공용 IP 주소를 만듭니다.
az network public-ip create \
--resource-group myBastionRG \
--name MyBastionIp \
--sku Standard
인터넷에 노출되지 않는 Linux VM을 만듭니다. VM에 생성에 필요한 키는 기존에 만들어 둔 public key를 등록합니다.
az vm create \
--resource-group myBastionRG \
--name myVM1 \
--image UbuntuLTS \
--size Standard_D2as_v4 \
--admin-username azureuser \
--public-ip-address "" \
--public-ip-sku Standard \
--ssh-key-values ~/.ssh/id_rsa.pub
Azure Bastion 리소스를 만듭니다.
az network bastion create \
--name MyBastion \
--public-ip-address MyBastionIp \
--resource-group myBastionRG \
--vnet-name MyVnet
1. 사용자 이름 azureuser
를 입력합니다.
2. Azure Key Vault의 SSH 프라이빗 키
를 선택합니다.
3.Azure Key Vault
자격증명과 할당된 키를 선택합니다.
4. 연결을 선택합니다.
5. 원격 셸에서 시스템을 업데이트하는 다음 명령과 같은 Linux 명령을 입력합니다.
sudo apt-get -y update
1. https://docs.microsoft.com/ko-kr/azure/bastion/vnet-peering
2. https://docs.microsoft.com/ko-kr/azure/bastion/bastion-connect-vm-ssh-windows
3. https://docs.microsoft.com/ko-kr/learn/modules/connect-vm-with-azure-bastion/1-introduction
4. https://docs.microsoft.com/ko-kr/learn/modules/intro-to-azure-bastion/3-how-azure-bastion-works
5. https://docs.microsoft.com/ko-kr/azure/bastion/create-host-cli
6. https://docs.microsoft.com/ko-kr/azure/bastion/bastion-connect-vm-ssh-windows