3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IAM ROLEをEC2に適用し、一時的なAccessKey、SecretAccessKeyを取得する方法

Last updated at Posted at 2019-05-28

アクセスキーとシークレットアクセスキーはIAMのユーザーで「アクセスキーの生成」で作れます。しかし、この方法だとアクセスキーを一定期間で交換しなければならないのでかなり手間です。
そこでEC2にIAM ROLE を割り当ててアクセスキーとはオサラバの予定でしたがIAM ROLE を適用したら以前に書いていた一時的なAccessKey、SecretAccessKeyが取得できなくなってました。
以前はこんなふうに書いていました

AWSCredentials credentials = new BasicAWSCredentials("アクセスキー", "シークレットアクセスキー");
AWSSecurityTokenServiceClient sts = new AWSSecurityTokenServiceClient(credentials);
GetSessionTokenRequest req = new GetSessionTokenRequest();
GetSessionTokenResult res = sts.getSessionToken(req);
Credentials tmpCredentials = res.getCredentials();
String accessKeyId = tmpCredentials.getAccessKeyId();
String secretAccessKeyId = tmpCredentials.getSecretAccessKey();

簡単に調べたのですがassumeRoleがよさげです。
本来は異なるアカウント間のリソースをいじるものみたいですが、
これでいいんじゃないかと。

AWSSecurityTokenService sts = new AWSSecurityTokenServiceClient();
AssumeRoleResult assumeRoleResult = sts.assumeRole(new AssumeRoleRequest()
		.withRoleArn(ROLE_ARN)
		.withRoleSessionName(ROLE_SESSION_NAME));

Credentials credentials = assumeRoleResult.getCredentials();
System.out.println("AccessKeyId=" + credentials.getAccessKeyId() + " SecretAccessKey=" + credentials.getSecretAccessKey()+ " SessionToken=" + credentials.getSessionToken());

ROLE_ARN、ROLE_SESSION_NAMEって何指定したらいいの?となって調べたところROLE_ARNはロールのARN

WS000001.JPG

ROLE_SESSION_NAMEはてきとーな文字列
ex.「role_session」みたいな

最後に使いたいロールに

        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::xxxxxxxxxxxx:role/full_ec2_lambda"
            ]
        }

のポリシーを追加すればOKです

これで一時的な認証情報が取得できます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?