3.4. デバイスマネージャー向け IoT
通常、デバイスマネージャーは、システム内のデバイス ID と認証情報の作成と管理を担当します。
3.4.1. 認証トークンの取得
デバイス管理 API にアクセスするには、API に対して自分自身を認証するためのトークンを取得する必要があります。
IoT テナントのデバイスへのアクセスは、IoTProject
リソースへのアクセス権に基づいて、デバイスレジストリーによりマップされます。アカウントに IoTProject
への 読み取り アクセス権がある場合に、このアカウントは、この IoT テナントのデバイスレジストリーに対して 読み取り 操作を実行することもできます。
トークンは、HTTP ヘッダー値 Authorization: Bearer <token>
を追加して、ベアラートークン として API に提示する必要があります。詳細は RFC 6750 を参照してください。
次の設定例では、${TOKEN}
を実際のトークンに置き換えます。
3.4.1.1. ユーザーの認証トークンの取得
現在の OpenShift のトークンを使用する場合は、トークンを抽出できます。
前提条件
- トークンをサポートするユーザーとして OpenShift インスタンスにログインする必要があります。
手順
現在のユーザーのトークンを抽出します。
oc whoami -t
ユーザートークンの有効期間は限られているため、有効期限が切れた後にトークンを更新する必要がある場合があります。
3.4.1.2. サービスアカウントの認証トークンの取得
次の手順を実行して、新しいサービスアカウントを作成し、トークンを抽出します。
前提条件
- 新しいサービスアカウント、ロール、およびロールバインディングを作成するには、OpenShift インスタンスにログインする必要があります。
手順
新規のサービスアカウントを作成します。
apiVersion: v1 kind: ServiceAccount metadata: name: my-device-manager-account 1
- 1
- サービスアカウントの名前
IoTProject
へのアクセスを許可する新しいロールを作成します。apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: device-manager-role 1 rules: 2 - apiGroups: ["iot.enmasse.io"] resources: ["iotprojects"] verbs: ["create", "update", "get", "list", "delete"]
この例では、namespace 内のすべての
IoTProjects
へのアクセスを許可します。アクセスをさらに制限するには、より具体的なルールを使用します。新しいロールバインディングを作成し、ロールをサービスアカウントに割り当てます。
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: my-device-manager-account-role-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: device-manager-role 1 subjects: - kind: ServiceAccount name: my-device-manager-account 2
サービスアカウントからトークンを取得します。
oc serviceaccounts get-token my-device-manager-account