hiroportation

ITの話だったり、音楽の話、便利なガジェットの話題などを発信しています

Terraform で AWS、Azure、GCP にアクセスする

はじめに

今後TerraformでIaCできるようにしたいので、まずは各クラウドにアクセスできるようにしたい。 各社専用のユーザを作成するが、全く手順が異なりましたのでまとめたいと思います。

AWSにアクセス

GUIで1プロセスで作成できるため、個人的にAWSが一番簡単です。

認証に必要なパラメータ

export AWS_ACCESS_KEY_ID="<aws_access_key_id>"
export AWS_SECRET_ACCESS_KEY="<aws_secret_access_key>"

手順

1.IAMにてユーザを作成する

  • ユーザタブへ移動
  • ユーザ作成を押下 f:id:thelarklife1021:20210109121613p:plain

2.ユーザ設定

  • ユーザ名設定
  • アクセス種類から「プログラムによるアクセス」をチェック f:id:thelarklife1021:20210109121753p:plain

3.ユーザの権限設定

  • アクセス許可の設定から「既存ポリシーを直接アタッチ」を選択
  • ポリシー一覧からポリシーを選択(AdministratiorAccessを選べば全てのサービスのオーナー権限を設定できます) f:id:thelarklife1021:20210109123941p:plain

4.タグ設定(オプション)

  • タグを設定することによりユーザを整理しやすくします
  • 最後に設定確認をして完了 f:id:thelarklife1021:20210109123914p:plain

Azureにアクセス

認証に必要なパラメータ

export ARM_SUBSCRIPTION_ID="<arm_subscription_id>"
export ARM_CLIENT_ID="<arm_client_id>"
export ARM_CLIENT_SECRET="<arm_client_secret>"
export ARM_TENANT_ID="<arm_tenant_id>"

Azureでは以下の通りARMがsubscription_id毎ににリソースIDを定義しているため、AWSより必要なパラメータが多い /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

手順(GUI)

手順はGUIでもCLIでも可能ですがCLIでも比較的楽にできますのでどちらも載せておきます。

docs.microsoft.com

  1. Azure Active Directoryから「アプリ登録」タブを押下
  2. 新規ユーザ作成
  3. 情報を入力すれば完了

手順(CLI)

CLIで専用ユーザを作成する。AzureではAPI用ユーザのことを「サービスプリンシパルと呼びます。 また、Azureの場合は下記の通りADサービスのコマンドを使用します。

docs.microsoft.com

1.azure cliをインストール

Azure CLIを使用することになるため、Azureダッシュボード上にある「Cloud Shell」を使う。

f:id:thelarklife1021:20210109125623p:plain

2.subscription_idを検索

$ az account show --query "{subscriptionId:id, tenantId:tenantId}"
{
  "subscriptionId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "tenantId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

3.subscription_idのセット

$ SUBSCRIPTION_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
$ az account set --subscription="SUBSCRIPTION_ID"

4.サービスプリンシパルを作成

roleオプションにて"Contributor"を設定することによって

$ az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/${SUBSCRIPTION_ID}"
Creating a role assignment under the scope of "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  Retrying role assignment creation: 1/36
{
  "appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "displayName": "azure-cli-YYYY-MM-DD-hh-mm-ss",
  "name": "http://azure-cli-YYYY-MM-DD-hh-mm-ss",
  "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

GCPにアクセス

GCPGUIで設定できますが、初回の場合ユーザー設定とは別にサービスアカウント権限を有効にする必要があります。 GCPではAPI用のユーザを「サービスアカウント」と呼びます。

認証に必要なパラメータ

GCPは他と違いファイルをアカウント情報が入ったjsonファイルを用意することになります

<account名>.json

手順

1.サービスアカウントの作成

  • 「IAMと管理」からサービスタブを選択
  • 「サービスアカウントの作成」を押下
  • サービスアカウント名の設定や権限の設定を入力し進めていく
  • 完了を押下 f:id:thelarklife1021:20210109135014p:plain

2.サービスアカウントのアカウント情報を取得

  • サービスアカウント一覧からの作成したアカウントの行の操作 列を選択して「鍵を作成」を選択する
  • そうするとjsonファイルがダウンロードされる f:id:thelarklife1021:20210109140400p:plain

3.サービスアカウント権限の有効化

  • 使用するサービスアカウントのAPIを有効化します

f:id:thelarklife1021:20210109135721p:plain

※1.でサービスアカウントの権限設定をしただけでは権限は有効になりません

以上