第1章 署名データの保護
システム管理者にとって、ハードウェア障害や誤ったデータ削除によるデータ損失が発生した場合、ソフトウェアサプライチェーンの署名データを保護することは非常に重要です。OpenShift API Data Protection (OADP) 製品は、Red Hat OpenShift 上で実行されるアプリケーションにデータ保護を提供します。OADP 製品を使用することで、ソフトウェア開発者はできるだけ早くコードの署名と検証を再開できるようになります。OADP Operator をインストールして設定したら、Red Hat Trusted Artifact Signer (RHTAS) データのバックアップと復元を開始できます。
1.1. OADP Operator のインストールと設定
OpenShift API Data Protection (OADP) Operator を使用すると、OpenShift アプリケーションリソースと内部コンテナーイメージをバックアップできるようになります。OADP Operator を使用して、Trusted Artifact Signer データをバックアップおよび復元できます。
この手順では、Amazon Web Services (AWS) Simple Storage Service (S3) を使用してバケットを作成し、OADP Operator を設定する方法を説明します。AWS の代わりに、Red Hat OpenShift Data Foundation など、サポートされている別の S3 互換オブジェクトストレージプラットフォーム を使用することもできます。
前提条件
- Red Hat OpenShift Container Platform バージョン 4.13 以降
-
cluster-admin
ロールでの OpenShift Web コンソールへのアクセス。 - S3 互換のバケットを作成する機能。
-
oc
およびaws
バイナリーがインストールされたワークステーション。
手順
ワークステーションでターミナルを開き、OpenShift にログインします。
構文
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
例
$ oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
注記OpenShift Web コンソールからコマンドラインで使用するログイントークンと URL を確認できます。OpenShift Web コンソールにログインします。ユーザー名をクリックし、Copy login command をクリックします。入力を求められた場合はユーザー名とパスワードをもう一度入力し、Display Token をクリックしてコマンドを表示します。
新しいバケットを作成します。
構文
export BUCKET=NEW_BUCKET_NAME export REGION=AWS_REGION_ID export USER=OADP_USER_NAME aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION
例
$ export BUCKET=example-bucket-name $ export REGION=us-east-1 $ export USER=velero $ $ aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION
新しいユーザーを作成します。
例
$ aws iam create-user --user-name $USER
新しいポリシーを作成します。
例
$ cat > velero-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeSnapshots", "ec2:CreateTags", "ec2:CreateVolume", "ec2:CreateSnapshot", "ec2:DeleteSnapshot" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::${BUCKET}/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::${BUCKET}" ] } ] } EOF
このポリシーを新しいユーザーに関連付けます。
例
$ aws iam put-user-policy \ --user-name $USER \ --policy-name velero \ --policy-document file://velero-policy.json
アクセスキーを作成します。
例
$ aws iam create-access-key --user-name $USER --output=json | jq -r '.AccessKey | [ "export AWS_ACCESS_KEY_ID=" + .AccessKeyId, "export AWS_SECRET_ACCESS_KEY=" + .SecretAccessKey ] | join("\n")'
AWS 秘密鍵情報を含む認証情報ファイルを作成します。
構文
cat << EOF > ./credentials-velero [default] aws_access_key_id=$AWS_ACCESS_KEY_ID aws_secret_access_key=$AWS_SECRET_ACCESS_KEY EOF
-
cluster-admin
ロールを持つユーザーで OpenShift Web コンソールにログインします。 - Administrator パースペクティブで、Operators ナビゲーションメニューを展開し、OperatorHub をクリックします。
- 検索フィールドに oadp と入力し、Red Hat が提供する OADP Operator タイルをクリックします。
- Install ボタンをクリックして、Operator の詳細を表示します。
- デフォルト値を受け入れ、Install Operator ページで Install をクリックし、インストールが完了するまで待ちます。
Operator のインストールが完了したら、ワークステーションのターミナルから、AWS 認証情報を使用して OpenShift のシークレットリソースを作成します。
例
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
- OpenShift Web コンソールから、View Operator ボタンをクリックします。
- DataProtectionApplication (DPA) タイルで Create instance をクリックします。
- Create DataProtectionApplication ページで、YAML view を選択します。
リソースファイルで次の値を編集します。
-
metadata
セクションで、velero-sample
をvelero
に置き換えます。 -
spec.configuration.nodeAgent
セクションで、restic
をkopia
に置き換えます。 -
spec.configuration.velero
セクションの下に、resourceTimeout: 10m
を追加します。 -
spec.configuration.velero.defaultPlugins
セクションの下に-csi
を追加します。 -
spec.snapshotLocations
セクションで、us-west-2
の値を AWS リージョンの値に置き換えます。 -
spec.backupLocations
セクションで、us-east-1
の値を AWS リージョンの値に置き換えます。 -
spec.backupLocations.objectStorage
セクションで、my-bucket-name
をバケット名に置き換えます。別の接頭辞を使用する場合は、velero
をバケット接頭辞名に置き換えます。
-
- Create ボタンをクリックします。