前言

Identify and Access Management(後面簡稱IAM)的出現是管理員的一大福音,讓雙A(authentication, authorization)的管理變的簡單又輕鬆,前陣子IAM終於也出現在web console了,大概除了logging之外沒有可挑剃的地方了吧?管理員通常會使用IAM幫你建帳號開權限,然後丟給你AWSAccessKeyId和AWSSecretKey!這組key pair可以讓你透過sdk使用EC2的資源,不過如果只是簡單要launch instance或者describe running instance這些簡單的動作,自已寫code有點麻煩,除此之外還有什麼方法?據我所知有兩種方法:

  1. IAM User sign-in URL,管理者必需先設定AWS Account Alias,然後替你設定密碼才可以使用,e.g. https://<alias>.signin.aws.amazon.com/console
  2. Elasticfox Firefox Extension for EC2

這兩種方法都各有缺點:

  1. IAM sign-in URL等於是開了一扇門讓不懷好意的人可以try密碼,如果沒有MFA保護,通常不會開啟IAM sign-in URL,尤其是具有管理權限的帳號。
  2. Elasticfox目前並不支援Firefox 4,可以利用Add-on Compatibility Reporter來強制使用,如果灌用的browser不是firefox時,還要另開一個Firefox來吃memory實在說不過去。

有沒有第三種方法?我直覺想到官方的ec2-api-tools,ec2-api-tools需要X.509憑證,但我們只有key pair,它的cli command沒有key pair的選項,原本以為這條路不通,沒想到只需要轉個彎就可以使用,這個彎簡單說就是管理員必需允許user上傳X.509憑證(UploadSigningCertificate),在這邊介紹第三種方法,也就是本文的主題。


產生X.509憑證

首先需先生出一把rsa private key.

openssl genrsa 2048 -out private-key.pem

然後透過這把private key產生X.509憑證,需要填寫一些資料,不太清楚該欄是幹麻的話可以參考如何填寫憑證申請書

openssl req -new -x509 -nodes -sha1 -days 730 -key private-key.pem -out cert.pem


設定IAMCli

先下載IAMCli

wget http://awsiammedia.s3.amazonaws.com/public/tools/cli/latest/IAMCli.zip

unzip後可以稍微看一下README,把環境變數AWS_IAM_HOME、JAVA_HOME設好,可以把設定加入shell config file可以省去每次都要設的功夫。

unzip IAMCli.zip
export JAVA_HOME=/usr/local/diablo-jd-1.6.0
export AWS_IAM_HOME=<your/IAMCli/path>

把環境變數AWS_CREDENTIAL_FILE指到一個設定檔,該設定檔必需有AWSAcessKeyId和AWSSecretKey,這邊以IAMCli的aws-credential.template為例

cp aws-credential.template ~/.aws-credential
vi .aws-credential #設定AWSAcessKeyId、AWSSecretKey
chmod 600 .aws-credential
export AWS_CREDENTIAL_FILE=~/.aws-credential

 

上傳憑證

iam-useraddcert -u <user> -f <x509 cert的路徑>

成功後會回傳cert id,這個不用記,後面可以用iam-userlistcerts列出來,iam-userdelcert刪除


設定ec2-api-tools

export EC2_HOME=~/where/to/ec2-api-tools
export EC2_PRIVATE_KEY=<剛剛產生的private key位置>
export EC2_CERT=<剛剛產生的cert位置>

用ec2din測試一下沒問題就okay了


地雷區

  1. 所有的範例都是rsa,使用dsa可以上傳,但ec2din時會噴錯誤。

 

Reference

  1. Creating and Uploading Server Certificates #這是Server Certificate,但前面產生X.509的部份可以參考
  2. Playing with AWS Access Identity Management
  3. 如何製作 SSL X.509 憑證? 

文章標籤
創作者介紹

PIXNET Lab

gasol 發表在 痞客邦 PIXNET 留言(0) 人氣()