AWS 매개 변수 저장소에서 SSH 키 관리
9584 단어 매개 변수 저장소AWSSystemsManager
개시하다
EC2 인스턴스에서 github 등 창고의 SSH 기밀 키를 관리할 때 매개변수 저장소를 사용하여 관리하는 방법에 대한 요약이다.
AWS parameter store
매개변수 저장소(공식적인 AWS Systems Manager 매개변수 저장소)는 AWS의 서비스로 데이터와 기밀 정보를 설정하는 서비스를 관리할 수 있습니다.
매개변수 저장소에 저장된 데이터는 AWS CLI와 같은 참조 값을 통해 참조할 수 있습니다.
또한 AWS Key Management Service(AWS KMS)를 사용하여 매개변수를 암호화하고 복호화할 수 있습니다.
SSH 키 관리
EC2 인스턴스에서 저장소의 SSH 비밀 키를 사용한다고 가정합니다.열쇠를 파라미터 저장소에 저장하고 이용하기 위해서는 다음과 같은 것이 필수적이다.
매개변수 저장소(공식적인 AWS Systems Manager 매개변수 저장소)는 AWS의 서비스로 데이터와 기밀 정보를 설정하는 서비스를 관리할 수 있습니다.
매개변수 저장소에 저장된 데이터는 AWS CLI와 같은 참조 값을 통해 참조할 수 있습니다.
또한 AWS Key Management Service(AWS KMS)를 사용하여 매개변수를 암호화하고 복호화할 수 있습니다.
SSH 키 관리
EC2 인스턴스에서 저장소의 SSH 비밀 키를 사용한다고 가정합니다.열쇠를 파라미터 저장소에 저장하고 이용하기 위해서는 다음과 같은 것이 필수적이다.
매개변수 저장소에 SSH 비밀 키 등록
SSH 키를 만들고 매개변수 저장소에 비밀 키를 등록합니다.
AWS 관리 콘솔에서 Systems Manager 페이지로 이동합니다.
페이지 왼쪽의 창 창에서
パラメータストア
(아래)를 선택하고 매개변수 스토어의 페이지로 이동합니다.페이지에서
パラメータの作成
를 클릭하여 매개변수 설정 화면(다음 그림)으로 이동합니다.화면 항목에 필요한 항목을 입력하여 매개 변수를 설정합니다.
이번 설정은 다음과 같다.
범위가 상세하면 고급 매개 변수를 사용하십시오.
고급 매개 변수는 사용 비용이 발생하지만 매개 변수의 크기와 수량 상한선이 비교적 커서 유효기간 등 상세하게 설정할 수 있다.
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/parameter-store-advanced-parameters.html
매개변수에 액세스할 수 있는 IAM 역할 작성
EC2 인스턴스의 매개변수 액세스를 허용하려면 IAM 역할이 필요합니다.
IAM 스크롤 제작 템플릿은 다음과 같습니다.
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
ParameterName:
Type: String
Description: ssm parameter name
Resources:
# SSMパラメータにアクセス許可するIAMロール
GetParameterRole:
Type: "AWS::IAM::Role"
Properties:
RoleName: "get-parameter-role"
Path: "/"
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- "ec2.amazonaws.com"
Action:
- "sts:AssumeRole"
# SSMパラメータにアクセスするポリシー
GetParameterPolicy:
Type: "AWS::IAM::Policy"
Properties:
PolicyName: "get-parameter-policy"
PolicyDocument:
Version: "2012-10-17"
Statement:
-
Effect: "Allow"
Action: "ssm:GetParameter"
Resource: !Sub "arn:aws:ssm:${AWS::Region}:${AWS::AccountId}:parameter/${ParameterName}"
Roles:
- !Ref GetParameterRole
# インスタンスプロファイル
GetParameterProfile:
Type: "AWS::IAM::InstanceProfile"
Properties:
Path: "/"
Roles:
- !Ref GetParameterRole
InstanceProfileName: get-parameter-profile
위의 템플릿은 지정된 이름(템플릿의 ParameterName) 매개변수 정보를 가져올 수 있도록 하는 역할을 합니다.역할을 작성한 후 EC2 인스턴스에 인스턴스 구성 파일을 첨부합니다.
AWS CLI 기반 매개 변수 호출, 활용
EC2 인스턴스에서 AWS CLI 를 사용하면 다음 명령을 통해 매개변수 정보를 얻을 수 있습니다.
aws ssm get-parameter --name (parameter-name) --with-decryption --output text
명령 옵션에 대한 설명은 다음과 같습니다.--query Parameter.Value
를 추가하면 매개변수 값만 얻을 수 있습니다.git 명령 실행
얻은 키는 ssh-agent에서 키 등록을 통해 파일로 관리하지 않은 상태에서 사용할 수 있습니다.
다음은 가져온 매개 변수를 사용하여git 명령을 실행하는 케이스 스크립트의 예입니다.
#!/bin/bash
key_name=ssh-key
git_with_ssm_key() {
ssm_key=$1; shift
# 鍵の取得
key_param=$(aws ssm get-parameter \
--with-decryption \
--name $ssm_key \
--output text \
--query Parameter.Value)
if [ $? -eq 0 ]; then
# 鍵の登録
ssh-add - <<< "${key_param}"
# gitコマンド実行
git "$@"
else
echo >&2 "ERROR: Failed to get ssm parameter : $ssm_key"
exit 1
fi
}
git_with_ssm_key $key_name clone [email protected]:your_account/repo_name
위 스크립트에서 매개 변수 저장소에서 얻은 키를 ssh-agent에 로그인하여git clone 명령을 실행합니다.주의사항 등
이번에 설명한 방법이라면 매개 변수 상점에서 매개 변수를 설정한 곳과 EC2 실례에서 매개 변수를 얻은 곳에서 인터넷을 통해 통신한다.더욱 안전하게 고려할 때 다음과 같은 변경 절차를 통해 인터넷을 통해 파라미터의 설정, 이용을 하지 않을 수 있다.
aws ssm put-parameter
명령은 매개 변수에 등록 기밀 키를 저장한다(캐릭터도 만들어야 한다).참고 자료
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/setup-create-vpc.html
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/parameter-store-advanced-parameters.html
https://alestic.com/2018/12/aws-ssm-parameter-store-git-key/
Reference
이 문제에 관하여(AWS 매개 변수 저장소에서 SSH 키 관리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tyoshitake/items/d62ff2ebce9482d84096텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)