본관은 경주(慶州). 자는 자진(自珍), 호는 야당(野塘). 김만균(金萬勻)의 증손으로, 할아버지는 좌의정 김명원(金命元)이고, 아버지는 첨지중추부사 김수렴(金守廉)이며, 어머니는 창녕성씨(昌寧成氏)로 성순(成恂)의 딸이다.
1618년(광해군 10) 증광 문과에 병과로 급제해 가주서(假注書)가 되고 1623년(인조 1) 검열이 되었다. 1625년 병조좌랑이 되었으나, 변경의 오랑캐 침입을 잘못 보고해 파직당했다.
뒤에 곧 기용되어 수찬·교리·지평·장령을 거쳐 1628년 부수찬이 되었는데, 대수롭지 않은 신병으로 휴가를 청했다가 연소한 관료가 나태하다 하여 두 번째 파직되었다. 다시 장령으로 기용되어 그 뒤 사간·시독관·부응교를 거쳐 1632년 집의가 되고 추숭도감도청(追崇都監都廳)을 겸하였다.
1636년 병자호란이 일어나자 예조참의로서 남한산성으로 인조를 호종하였다. 이듬해 대사간이 되자 강화도 함락에 대한 수장(守將)의 책임을 물어 처형할 것과, 척화신(斥和臣)을 문책하지 말 것을 주장하였다. 그 해에 경기도관찰사가 되었는데, 생일에 여러 읍으로부터 선물을 받고 전주에 내려가 가족과 어울려 가무연락(歌舞宴樂)한 것이 문제가 되어 파직당하였다.
1641년에 대사간으로 기용되어 우부빈객·도승지를 거쳐 1644년에 다시 경기도관찰사가 되었다. 이듬해 대사헌이 된 뒤 1649년(효종 즉위년)까지 대사성·대사간·대사헌을 번갈아 지냈다. 1650년 이조참판이 되고 경천군(慶川君)에 봉해졌으며, 대사헌을 거쳐 1656년 동지춘추관사가 되어 사은부사로 청나라에 다녀왔다. 같은 해 공조참판·대사헌이 되었고, 이듬해 예조참판·도승지가 되었다.
1658년 공조판서에 오른 뒤 형조판서를 지냈고, 1660년 겸지춘추관으로 『효종실록(孝宗實錄)』의 편찬에 참여하였다. 이듬해 공조판서가 된 뒤 형조판서·예조판서·개성유수를 역임하였다. 저서로 『역대인감(歷代人鑑)』이 있다. 시호는 정효(貞孝)이다.