バナー画像

どこのシステムでも、保守用のユーザー管理は頭を悩ますところです。LDAPやActiveDirectoryはよく聞くものの、どうも導入に敷居が高い・・・

かといって、データベースやWebサーバー、システムなどなど、それぞれにユーザー体系を作って個別管理して・・・、とするのも面倒です。これでは1人の保守要員を追加するたびに、一体何ヶ所にユーザー登録しなければいけないのか!となりますよね。

AWSの場合、そういった悩みを解決してくれるサービスがあります。それが今回解説するAWS Identity and Access Management (IAM)なのです!

逆に言えば、IAMをマスターしないと各種サービスを使いこなせません。よって今回の解説をじっくり読んで、ぜひ理解を深めてください。

AWS Identity and Access Management (IAM) とは

改めてIAMとは何なのか、概要を解説します。

IAMとは、AWSの各種サービスに対するユーザー権限を管理するサービスです。IAM自体で何かをするわけではありません。一番最初にAWSに加入するときは、メールアドレスとパスワードを設定します。複数人でサービスを共有するときはそれだけで問題ありませんが、複数人数でリソースを共有・参照するとなれば、そうはいきません。

IAMでは、一番最初にメールアドレスとパスワードで登録するユーザーをルートユーザーといいます。AWSは、なんらかの作業をするときはたとえそれが管理者の作業であったとしてもIAMで作ったユーザーを使い、ルートユーザーは最初のIAMユーザーを作るためだけにとどめる、という使い方を推奨しています。

IAMの機能・できること

IAMを使えば、他人にAWSの各種リソースにアクセスする権限を、アクセスキーやパスワードを共有しなくても付与できます。実際にやってみますので、イメージをつかんでください。

まず最初に、ユーザーの所属するグループを作成します。同時に、そのグループに所属すると何ができるのかを設定します。それをポリシーのアタッチといいます。ちなみに以下は、EC2に対するフルアクセスをアタッチしようとしているところです。

次に、グループ内にユーザーを作ります。

もう一度グループの参照画面に戻ると・・・

できてますね。所要時間は5分程度で終わりました!

ユーザー作成が終わると、以下のようなURLが付与されます。

https://(アカウント).signin.aws.amazon.com/console

追加したユーザーは、以降このアドレスからAWSマネジメントコンソールへログインすることになります。

IAMが活躍するシーン

何といってもAWSの各種リソースへのアクセスを一括管理できるのは、とても大きなメリットです。各種リソースごとにユーザー権限を付与する必要はありません。

ユーザーは特に人である必要はありません。例えば、EC2インスタンスに構築したWebアプリシステムから、S3のバケットやRDSへアクセスできるようEC2インスタンスに権限を付与することもできます。

料金

IAMそのものに料金はかかりません!先ほど見ていただいたように、簡単にユーザーが追加できるのに無料とはうれしい限りです。

IAMへのアクセス方法

IAMを使ってAWSへアクセスする方法を解説します。

AWS マネジメントコンソール

ルートユーザーでログインしているときに、マネジメントコンソールの「AWSにようこそ」→「アカウント」と進んでください。ここで自分のアカウントIDが参照できます。これをコピーしておきましょう。

次に一度サインアウトします。

「別のアカウントにサインインする」を選択してください。

ここで先ほどコピーしたアカウントIDを入れて、次に進んで追加したIDとパスワードを入れてログインできます。

AWS コマンドラインツール

AWSのコマンドラインツール、AWS CLIからもアクセスできます。ユーザーの追加や削除などといった、マネジメントコンソールからできることはほとんど可能です。試しに、グループの詳細表示をしてみましょう。

>aws iam get-group --group-name (グループ名)
{
    "Group": {
        "Path": "/",
        "CreateDate": "2018-03-06T13:22:09Z",
        "GroupId": "AGPAJT***************",
        "Arn": "arn:aws:iam::************:group/PotepanGroup",
        "GroupName": "PotepanGroup"
    },
    "Users": [
        {
            "UserName": "potepan_user",
            "PasswordLastUsed": "2018-03-06T13:38:45Z",
            "CreateDate": "2018-03-06T13:27:42Z",
            "UserId": "AIDAJQ***************",
            "Path": "/",
            "Arn": "arn:aws:iam::************:user/potepan_user"
        }
    ]
}

お分かりでしょうか。JSON形式で返ってきましたね。その他各種操作ができますので、興味のある方はこちらをご覧ください。

AWS SDK

AWS SDKから、各種操作が可能です。ユーザー追加や削除も可能です。雰囲気をつかんでいただくために、アカウントが最後にログインしたのはいつかを取得するJavaのソースを載せておきます。

こちらはAWSが公開しているGitHubから引用しました。長くなるので冒頭のimport文は省略しています。

public class AccessKeyLastUsed {
    public static void main(String[] args) {

        final String USAGE =
            "To run this example, supply an access key id\n" +
            "Ex: AccessKeyLastUsed <access-key-id>\n";

        if (args.length != 1) {
            System.out.println(USAGE);
            System.exit(1);
        }

        String access_id = args[0];

        final AmazonIdentityManagement iam =
            AmazonIdentityManagementClientBuilder.defaultClient();

        GetAccessKeyLastUsedRequest request = new GetAccessKeyLastUsedRequest()
            .withAccessKeyId(access_id);

        GetAccessKeyLastUsedResult response = iam.getAccessKeyLastUsed(request);

        System.out.println("Access key was last used at: " +
                response.getAccessKeyLastUsed().getLastUsedDate());
    }
}

雰囲気をお分かりいただけたでしょうか?もちろんJavaだけではなく、Python、Ruby、.NET、iOS、Androidにも対応しています。

IAM HTTPS API

IAMはWebAPI経由でもアクセス可能です。HTTPSで以下のグローバルエンドポイントにアクセスします。

https://iam.amazonaws.com

またリクエストには、アクセスキーIDおよびシークレットアクセスキーによる署名が必要です。よってAWSのドキュメントを見る限りでは、どうもSDKでアクセスする方が容易なようです。詳細はこちらにありますので、WebAPI経由でのアクセスを検討している方はぜひご参考にどうぞ。

まとめ

本記事では、AWS IAMを解説しました。

ご覧いただいたようにIAMの概念自体はかなり簡単で、なんらかの開発ツールやミドルウェアを触ったことのある方ならすぐに分かるレベルです。やってみるとわかりますが、IAMで設定したアクセス権限体系をAWSの各種サービスで使えるというのは、予想以上の便利さです。

ぜひ導入を検討してみてくださいね!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。