I think the index depends on the way that solid was created (you had a planar drilled surface and then extruded it to create a solid; or you had a non-drilled solid - and then you drilled it…).
So the top face may not always have the same index.
If those drilled plates are always closed polysurfaces, then the top face normal will always point towards up (0,0,1).
If the drilled surface is not made of closed polysurface, that could mean that Rhino may not set the top face normal direction to (0,0,1) - meaning it could be (0,0,-1) as well.
In that case you could check the Z coordinate of of each surface. The largest one would belong to the top face:
import rhinoscriptsyntax as rs
import scriptcontext as sc
brep_id = rs.GetObject("pick your drilled solid")
brep_obj = rs.coercebrep(brep_id)
faces = brep_obj.Faces
mdlPts = 
domain0 = Rhino.Geometry.Interval(0,1)
domain1 = Rhino.Geometry.Interval(0,1)
for f in faces:
duplF = f.DuplicateFace(False)
topZ = mdlPts
faceI = 0
for i,pt in enumerate(mdlPts):
if pt > topZ:
topZ = pt
faceI = i