Gestion de bases de données

Planifications ODA : la tâche SSH cleaner qui supprime les clés SSH obsolètes

Introduction


Oracle a ajouté une nouvelle planification sur l’ODA dans les ensembles de correctifs 19.16. Cette nouvelle planification, que l’on peut voir comme une tâche, s’appelle SSH cleaner job to clean up stale SSH keys. Son nom indique assez clairement ce qu’elle fait. La nouvelle planification SSH cleaner job est activée par défaut et s’exécute toutes les 30 minutes. Elle supprime les fichiers ida_rsa et id_rsa.pub des utilisateurs grid, oracle et root. Si vous ignoriez l’existence de cette nouvelle planification et que vous dépendez des clés SSH, alors, comme moi, vous verrez des choses cesser de fonctionner.

Voici ma solution, accompagnée de quelques conseils supplémentaires pour gérer les clés SSH sur un ODA.

Planifications ODA


Liste des planifications ODA disponibles : 19.15 et 19.16.

Une nouvelle planification a été ajoutée dans la version 19.16 :

--19.15 and lower

[root@oda101vm01 ~]# odacli list-schedules

ID                                    Name                      Description                                        CronExpression   Disabled
------------------------------------- ------------------------- -------------------------------------------------- ------------------- -----
1e2eccb9-c275-47c4-97c9-9bb6f0ec419c  Rebalance Monitoring      Rebalance poll and Power modification              0 0/5 * 1/1 * ? *   true
283ca871-3905-441c-a97d-163ae75fe58b  feature_tracking_job      Feature tracking job                               0 0 20 ? * WED *    false
6c4cdf12-6ecf-4d82-893d-a43378a9a467  bom maintenance           bom reports generation                             0 0 1 ? * SUN *     false
c752c67f-c677-40ae-833e-24aafcad9818  Log files Cleanup         Auto log file purge bases on policy                0 0 3 1/1 * ? *     false
fe3b1fc3-0bb3-4ecf-98d6-af4d40a6b0b5  AgentState metastore cleanup internal agentstateentry metastore maintenance  0 0 0 1/1 * ? *     false

--19.16 The SSHCleanerJob is enabled by default (Disabled = false)

[root@oda101vm01 ~]# odacli list-schedules (node 1)

ID                                    Name                      Description                                        CronExpression   Disabled
------------------------------------- ------------------------- -------------------------------------------------- ------------------- -----
1e2eccb9-c275-47c4-97c9-9bb6f0ec419c  Rebalance Monitoring      Rebalance poll and Power modification              0 0/5 * 1/1 * ? *   true
283ca871-3905-441c-a97d-163ae75fe58b  feature_tracking_job      Feature tracking job                               0 0 20 ? * WED *    false
6c4cdf12-6ecf-4d82-893d-a43378a9a467  bom maintenance           bom reports generation                             0 0 1 ? * SUN *     false
b0b28833-80ee-4ff8-8a8a-0bbd4949ea63  SSHCleanerJob             SSH cleaner job to clean up stale SSH keys         0 0/30 * 1/1 * ? *  false
c752c67f-c677-40ae-833e-24aafcad9818  Log files Cleanup         Auto log file purge bases on policy                0 0 3 1/1 * ? *     false
fe3b1fc3-0bb3-4ecf-98d6-af4d40a6b0b5  AgentState metastore cleanup internal agentstateentry metastore maintenance  0 0 0 1/1 * ? *     false

[root@oda102vm01 ~]#  odacli list-schedules (node 2)

ID                                   Name                      Description                                        CronExpression     Disabled
------------------------------------ ------------------------- -------------------------------------------------- ------------------ --------
5a1aa639-4c6a-4d96-bb02-d3ed4e2b2245 feature_tracking_job      Feature tracking job                               0 0 20 ? * WED *   false
704e2f3f-ef41-4b81-8246-d062203015ea bom maintenance           bom reports generation                             0 0 1 ? * SUN *    false
b0aa90ca-f847-47c1-beef-88bc42306c11 AgentState metastore cleanup internal agentstateentry metastore maintenance  0 0 0 1/1 * ? *    false
be68182f-81e1-41c8-9900-89e7d7900d52 SSHCleanerJob             SSH cleaner job to clean up stale SSH keys         0 0/30 * 1/1 * ? * false
ec0848d0-a17a-40ca-9c8f-16810b701fe1 Log files Cleanup         Auto log file purge bases on policy                0 0 3 1/1 * ? *    false
f2e6c810-01ac-40f7-9c0e-21905d67df45 Rebalance Monitoring      Rebalance poll and Power modification              0 0/5 * 1/1 * ? *  true

Désactiver la planification SSHCleanerJob.

Les planifications sont propres à chaque nœud du cluster bare metal ou DBSystem. Vous devrez donc exécuter la commande sur les deux nœuds.

--If desired disable the SSHKey cleanup job

[root@oda101vm02 ~]# odacli update-schedule -i b0b28833-80ee-4ff8-8a8a-0bbd4949ea63 -d
Update job schedule success

[root@oda101vm01 ~]# odacli list-schedules (node 1)

ID                                    Name                      Description                                        CronExpression   Disabled
------------------------------------- ------------------------- -------------------------------------------------- ------------------- -----
1e2eccb9-c275-47c4-97c9-9bb6f0ec419c  Rebalance Monitoring      Rebalance poll and Power modification              0 0/5 * 1/1 * ? *   true
283ca871-3905-441c-a97d-163ae75fe58b  feature_tracking_job      Feature tracking job                               0 0 20 ? * WED *    false
6c4cdf12-6ecf-4d82-893d-a43378a9a467  bom maintenance           bom reports generation                             0 0 1 ? * SUN *     false
b0b28833-80ee-4ff8-8a8a-0bbd4949ea63  SSHCleanerJob             SSH cleaner job to clean up stale SSH keys         0 0/30 * 1/1 * ? *  true
c752c67f-c677-40ae-833e-24aafcad9818  Log files Cleanup         Auto log file purge bases on policy                0 0 3 1/1 * ? *     false
fe3b1fc3-0bb3-4ecf-98d6-af4d40a6b0b5  AgentState metastore cleanup internal agentstateentry metastore maintenance  0 0 0 1/1 * ? *     false


[root@oda102vm01 ~]#  odacli list-schedules (node 2)

ID                                   Name                      Description                                        CronExpression     Disabled
------------------------------------ ------------------------- -------------------------------------------------- ------------------ --------
5a1aa639-4c6a-4d96-bb02-d3ed4e2b2245 feature_tracking_job      Feature tracking job                               0 0 20 ? * WED *   false
704e2f3f-ef41-4b81-8246-d062203015ea bom maintenance           bom reports generation                             0 0 1 ? * SUN *    false
b0aa90ca-f847-47c1-beef-88bc42306c11 AgentState metastore cleanup internal agentstateentry metastore maintenance  0 0 0 1/1 * ? *    false
be68182f-81e1-41c8-9900-89e7d7900d52 SSHCleanerJob             SSH cleaner job to clean up stale SSH keys         0 0/30 * 1/1 * ? * true
ec0848d0-a17a-40ca-9c8f-16810b701fe1 Log files Cleanup         Auto log file purge bases on policy                0 0 3 1/1 * ? *    false
f2e6c810-01ac-40f7-9c0e-21905d67df45 Rebalance Monitoring      Rebalance poll and Power modification              0 0/5 * 1/1 * ? *  true

Consulter les détails de la planification SSHCleanerJob

Pour consulter les détails supplémentaires de la planification :

--review the odacli help for describing a schedule.

[root@oda101vm01 ~]# odacli  describe-schedule -h
describe-schedule
    Describes a specific schedule

Syntax
    describe-schedule -i  [-j] [-h]

Parameters
    Options                    Description
    -------------------------  -------------------------------------------------
    --scheduleid,-i (*)        Schedule ID

    --json,-j                  Specifies to show output in JSON format

    --help,-h                  Specifies to display help message

[root@oda101vm01 ~]# odacli describe-schedule -i b0b28833-80ee-4ff8-8a8a-0bbd4949ea63

Job Schedule details
----------------------------------------------------------------
                     ID:  b0b28833-80ee-4ff8-8a8a-0bbd4949ea63
                JobName:  SSHCleanerJob
               JobGroup:  SSHCleanerJobGroup
         CronExpression:  0 0/30 * 1/1 * ? *
               JobClass:  com.oracle.dcs.agent.schedule.jobs.SSHCleanerJob
            UpdatedTime:  November 25, 2022 4:50:55 PM EST
            Description:  SSH cleaner job to clean up stale SSH keys
                Disable:  true

Solution de contournement à la DÉSACTIVATION de la planification SSHCleanerJOB

Solution de contournement pour empêcher la planification SSHCleanerJob de supprimer les fichiers de clés SSH.

Au départ, je ne m’étais pas rendu compte de l’ajout de SSHCleanerJob et j’avais besoin d’une solution rapide pour empêcher la suppression des clés SSH. J’ai rendu les fichiers id_rsa et id_rsa.pub immuables, puis j’ai annulé ce changement une fois les planifications SSHCleanerJob désactivées. Je ne recommande pas cette méthode comme solution permanente.

--ssh key lockdown (make immutable) as the root user on each node.
chattr +i -V /root/.ssh/id_rsa*
chattr +i -V /home/grid/.ssh/id_rsa*
chattr +i -V /home/oracle/.ssh/id_rsa*

--ssh key unlock (required to make any changes to these files.)
chattr -i /root/.ssh/id_rsa*
chattr -i /home/grid/.ssh/id_rsa*
chattr -i /home/oracle/.ssh/id_rsa*

RECOMMANDATION – SAUVEGARDER les fichiers de CLÉS SSH

Sauvegardez vos fichiers de clés SSH.

Lors des étapes d’application des correctifs ODA, les fichiers de clés SSH sont supprimés et ne sont pas recréés. C’est un autre comportement frustrant de l’application des correctifs. Pour y remédier, je recommande de sauvegarder vos clés SSH et votre fichier authorized_key avant d’appliquer les correctifs ODA.

--perform the following for root, oracle, and grid users on both nodes

--root
cp -p ~/.ssh/id_rsa /backup_location/`whoami`.`uname -n`.id_rsa
cp -p ~/.ssh/id_rsa.pub /backup_location/`whoami`.`uname -n`.id_rsa.pub
cp -p ~/.ssh/authorized_keys /backup_location/`whoami`.`uname -n`. authorized_keys

--grid
cp -p ~/.ssh/id_rsa /backup_location/`whoami`.`uname -n`.id_rsa
cp -p ~/.ssh/id_rsa.pub /backup_location/`whoami`.`uname -n`.id_rsa.pub
cp -p ~/.ssh/authorized_keys /backup_location/`whoami`.`uname -n`. authorized_keys

--oracle
cp -p ~/.ssh/id_rsa /backup_location/`whoami`.`uname -n`.id_rsa
cp -p ~/.ssh/id_rsa.pub /backup_location/`whoami`.`uname -n`.id_rsa.pub
cp -p ~/.ssh/authorized_keys /backup_location/`whoami`.`uname -n`. authorized_keys

Restaurez vos fichiers de clés SSH.

Une fois les correctifs ODA appliqués, restaurez les clés SSH et le fichier authorized_keys d’origine.

--perform the following for root, oracle, and grid users on both nodes keeping the original file timestamp.

--root
cp -p /backup_location/`whoami`.`uname -n`.id_rsa ~/.ssh/id_rsa
cp -p /backup_location/`whoami`.`uname -n`.id_rsa.pub ~/.ssh/id_rsa.pub
cp -p /backup_location/`whoami`.`uname -n`.authorized_keys ~/.ssh/authorized_keys

--grid
cp -p /backup_location/`whoami`.`uname -n`.id_rsa ~/.ssh/id_rsa
cp -p /backup_location/`whoami`.`uname -n`.id_rsa.pub ~/.ssh/id_rsa.pub
cp -p /backup_location/`whoami`.`uname -n`.authorized_keys ~/.ssh/authorized_keys

--oracle
cp -p /backup_location/`whoami`.`uname -n`.id_rsa ~/.ssh/id_rsa
cp -p /backup_location/`whoami`.`uname -n`.id_rsa.pub ~/.ssh/id_rsa.pub
cp -p /backup_location/`whoami`.`uname -n`.authorized_keys ~/.ssh/authorized_keys

CONCLUSION

C’est Oracle qui fixe les règles.

En général, quand Oracle ajoute une nouvelle fonctionnalité, c’est pour une bonne raison. Ce n’est pas toujours le cas, comme pour la tâche SSH cleaner job.

Vérifiez auprès du soutien Oracle.

J’ai ouvert une SR auprès du soutien Oracle pour m’assurer de ne rien faire que je ne devrais pas faire. Oracle a confirmé qu’il est permis de désactiver la tâche SSH cleaner job selon vos besoins. Documents de référence : Application de correctifs à Oracle Database Appliance, Interface de ligne de commande d’Oracle Database Appliance

Documents de référence

Application de correctifs à Oracle Database Appliance

Interface de ligne de commande d’Oracle Database Appliance

Tous les articles