SORACOM APIを使って、SORACOM認証情報(AWSアクセスキー)を削除してみた

お掃除の自動化ができそうです。
2022.08.10

SORACOMには、開発者向けにAPIが提供されています。

本記事では、このAPIを使って、SORACOM認証情報を削除してみました。 AWSアクセスキーをローテーションしたあと、不要になったSORACOM認証情報を削除する場面を想定しています。

おすすめの方

  • SORACOM APIを使いたい方

SORACOM APIを使う準備

  • SAMユーザの作成
  • SAMユーザのアクセス権限を付与
  • SAMユーザの「認証キーID&認証キーシークレット」を取得

上記については、次のブログを参考に行います。

なお、今回のアクセス権限は下記となります。

{
  "statements": [
    {
      "api": [
        "Credential:deleteCredential"
      ],
      "effect": "allow"
    }
  ]
}

SORACOM権限

SORACOM APIで認証情報を削除する

いまの認証情報を確認する

今回は「foobar-20220722」を削除します。

削除前のSORACOM認証情報

利用するAPI

次のAPIを利用します。

  • DELETE /credentials/{credentials_id}

Pythonスクリプト

次のスクリプトを使います。内容的には、SORACOM APIを使うためのAPIキーを取得して、認証情報の削除APIにアクセスしています。

お試し実装のため、下記となっています。本番運用時には適宜検討し、実装してください。

  • APIトークンの有効期限はデフォルト設定です。
  • レートリミットの考慮をしていません。

API トークンの有効期間について

制限事項と注意事項

app.py

import json
import requests
from typing import Tuple


SORACOM_ENDPOINT = 'https://api.soracom.io/v1'

SORACOM_KEY_ID = 'keyId-aaa'
SORACOM_SECRET = 'secret-bbb'

SORACOM_CREDENTIAL_ID = 'foobar-20220722'


def main():
    api_key, token = get_token()

    delete_credentials(api_key, token)


def get_token() -> Tuple[str, str]:
    headers = {'Content-Type': 'application/json'}
    data = {
        'authKeyId': SORACOM_KEY_ID,
        'authKey': SORACOM_SECRET,
    }
    resp = requests.post(f'{SORACOM_ENDPOINT}/auth', headers=headers, data=json.dumps(data))

    d = resp.json()

    return d['apiKey'], d['token']


def delete_credentials(api_key: str, token: str) -> None:
    headers = {
        'Content-Type': 'application/json',
        'X-Soracom-API-Key': api_key,
        'X-Soracom-Token': token,
    }

    resp = requests.delete(
        f'{SORACOM_ENDPOINT}/credentials/{SORACOM_CREDENTIAL_ID}',
        headers=headers,
    )
    print(resp)


if __name__ == '__main__':
    main()

スクリプトを実行する

python app.py

SORACOM認証情報を削除できました。

削除後のSORACOM認証情報

さいごに

SORACOM APIで認証情報の削除ができました お掃除の自動化ができそうです。

参考