Qiskit supports gates defined by arbitrary unitary matrices and unitary synthesis.
First, define the matrix as a Numpy array, convert it into a gate and add it to a circuit:
import numpy as np
from qiskit import QuantumCircuit
from qiskit.extensions import UnitaryGate
matrix = np.array([[1,0,0,0,0,0,0,0],
[0,1,0,0,0,0,0,0],
[0,0,1,0,0,0,0,0],
[0,0,0,0,1,0,0,0],
[0,0,0,1,0,0,0,0],
[0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,1,0],
[0,0,0,0,0,0,0,1]], dtype=np.complex)
circuit = QuantumCircuit(3)
circuit.append(UnitaryGate(matrix), [0,1,2])
Then, transpile it into your desired basis (the current synthesizer only supports 1q- and 2q-gates basis):
from qiskit import transpile
new_circuit = transpile(circuit, basis_gates=['cx', 'u1', 'u2', 'u3'])
new_circuit.draw('mpl')

You can check the equivalence with Operator
from qiskit.quantum_info import Operator
Operator(new_circuit).equiv(circuit)
True