げんきちの秘密基地

エンジニアリングが世の中の思いを実現してきた歴史に気づき、29歳未経験からWEBエンジニアとして転生!【Danger】綺麗事を割と本気で言ってきます【GitHub】https://github.com/0840kg【Twitter】https://twitter.com/0840kg

AWSで個人情報を不正利用されないためには? その1

ぞす!げんきちです!\\\\٩( 'ω' )و ////

 

「いや、誰だよ」って方は、下記リンクを見てやってください。

  1. はじめまして!げんきちです! - げんきちの秘密基地

  2. 僕がエンジニアになりたい理由 - げんきちの秘密基地

目次〜

f:id:Genkichi:20190314001946j:plain

 

きっかけ

qiita.com

 

こわー!!!!!!!!

 

その1 盗まれてはまずい情報について

その2 盗まれないためにしておくべきこと

 

鍵とは

暗号アルゴリズムの手順を制御するためのデータのこと。

 

ec2-userの秘密鍵(ローカル→EC2)

EC2インスタンス = 仮想サーバー

ec2-user               = ec2インスタンスに最大の権限を持つユーザー

秘密鍵     = 名前は任意。ec2-userと紐付く。

 

生成

EC2インスタンス作成時に、ec2-userというユーザーと秘密鍵が自動生成される。

AWShttps://aws.amazon.com/jp/

f:id:Genkichi:20190312200120j:plain

 

保存場所

【ローカル環境】

mv Downloads/hoge.pem .ssh/

 

主な役割

AWSへのログイン時に使用する。

 

【ローカル環境】

ssh -i hoge.pem ec2-user@hoge.hoge

 

MySQLのパスワード(EC2→EC2)

生成

MySQLインストール時にrootというユーザーがアクセルできるように設定される。

【本番環境】

sudo yum install mysql56-server mysql56-devel mysql56

コマンドを入力して、パスワードを設定できる。

【本番環境】

sudo /usr/libexec/mysql56/mysqladmin -u root password '設定したいパスワード'

 

保存場所

【本番環境】

sudo vim /etc/environment

  

【config/database.yml(ローカル環境)】

production:
  <<: *default
  database: ~~~
  username: root
  password: <%= ENV['DATABASE_PASSWORD'] %>
  socket: /var/lib/mysql/mysql.sock 
主な役割

MySQLとのアクセス時に使用する。

【本番環境】

sudo service mysqld start

 

rails db:create時などにdatabase.ymlから呼ばれる。

【本番環境】

rails db:create RAILS_ENV=production

EC2インスタンスの公開鍵(EC2→Github

生成

コマンドを入力して、EC2インスタンスSSH鍵ペアを作成する。

【本番環境】

ssh-keygen -t rsa -b 4096

 

コマンドを入力して、SSH公開鍵を表示し、コピーする。

【本番環境】

cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2E......

 

保存場所

Githubhttps://github.com/settings/keys

f:id:Genkichi:20190312191429j:plain

 

主な役割

Githubとのアクセス時に使用する。

【本番環境】

ssh -T git@github.com

 

Railsのsecret_key_base(EC2→クライアント)

生成

コマンドを入力して、secret_key_baseを作成する。

【本番環境】

rake secret
69619d9a75b78f2e1c87ec5e07541........

 

保存場所

【本番環境】

sudo vim /etc/environment

 

【config/secrets.yml(ローカル環境)】

development:
  secret_key_base: ~~~~~~~~
  aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
  aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>

test:
  secret_key_base: ~~~~~~~~

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
  aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %> 
主な役割

セッションハイジャックを防ぐため、セッションを暗号化してからcookieに格納するために使用する。

 

www.meganii.com

www.techmatrix.co.jp

zariganitosh.hatenablog.jp

 

IAMユーザーのaws_access_key_idとaws_secret_access_key(ローカル→S3、EC2→S3)

rootユーザー = AWSのどんな操作もできるユーザー

IAMユーザー = 使える機能が制限されたユーザー(今回はS3のみ)

 

生成

IAMユーザー作成時に、User name(任意)に紐付く、aws_access_key_idとaws_secret_access_keyが自動生成される。

AWShttps://aws.amazon.com/jp/

f:id:Genkichi:20190312202048j:plain

 

保存場所

【ローカル環境】

vim ~/.bash_profile

 

【本番環境】

vim ~/.bash_profile

 

【config/secrets.yml(ローカル環境)】

development:
  secret_key_base: ~~~~~~~~
  aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
  aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>

test:
  secret_key_base: ~~~~~~~~

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
  aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>

 

主な役割

IAMユーザーとしてアクセスする時に、使用する。

例)S3へアクセスする。

 

今日のまとめ

ec2-userの秘密鍵を盗まれると、AWSへログインされ、操作されてしまう。

MySQLのパスワードを盗まれると、MySQLへアクセスされ操作されてしまう。

EC2インスタンスの公開鍵を盗まれると、まー大丈夫...かな。

SECRET_KEY_BASEが盗まれるとセッションを復号化(セッションハイジャック)されてしまう。

IAMユーザーのaws_access_key_idとaws_secret_access_keyを盗まれると、例えばS3にアクセスされ、操作されてしまう。

 

盗めまれたくないものは、間違ってもGithub上にはあげてはいけない。

ヒューマンエラーを防ぐ方法を、明日追記します!\(^o^)/

 

<一日一新>

さっちゃんのカルビ丼。こだわりの味?

 

<学習進捗>

学習開始からの期間 :93日
今日までの合計時間:914h
今日までに到達すべき目標時間:847h
目標との解離:67h
10,000時間」まで、

 

残り・・・9,086時間!」

 

以上です。

読んでくれた方々、ありがとうございました!((_ _ (´ω` )ペコ。

genkichi.hateblo.jp

genkichi.hateblo.jp

 

f:id:www08056561815:20190224095507g:plain

twitter.com