1009년(목종 12)에 김치양(金致陽)이 난을 일으켜 목종을 폐하려 했을 때, 대정문 별감(大定門別監)에 임명되어 궁문을 폐쇄하고 국왕을 호위하였다. 1010년(현종 1)에 거란이 침입하자 통군사(統軍使)로서 통주(通州: 지금의 평안북도 선천)에서 거란군의 공격을 막았으나 패배하였다.
다음 해에 참지정사(參知政事)로 승진했으며, 서북면행영 도통사(西北面行營都統使)와 서경 유수를 거친 다음 이부상서(吏部尙書)로 옮겼다. 1012년에는 동경유수를 없애고, 경주 방어사(慶州防禦使)를 둘 것과 12주(州)의 절도사를 5도호(都護) ·75도 안무사(道安撫使)로 대체할 것을 건의해 실행되었다.
내사시랑평장사(內史侍郎平章事)와 문하시랑평장사(門下侍郞平章事)를 차례로 역임하였고, 1019년에 추충좌리동덕공신 청하현 개국남(推忠佐理同德功臣淸河縣開國男)으로 봉해졌다. 1021년에는 광국공신(匡國功臣)이 더해지고 개국백(開國伯)으로 작진(爵進)되었다.
관직도 검교 태사 수 문하시중 판상서이부사(檢校太師守門下侍中判尙書吏部事)에 올라 총재(冢宰: 수상, 으뜸 재상)가 되었다. 이 때 주 현의 장리(長吏: 이부의 長) 칭호를 정리하였다. 즉 군 · 현 이상은 호장으로, 향(鄕) · 부곡(部曲) · 진(津) · 정(亭) · 역(驛) 등에서는 장(長)으로 부르도록 하였다.
거란의 동경장군(東京將軍) 대연림(大延琳)이 반란을 일으켜 흥료국(興遼國)을 세우고 고려에 도움을 요청했을 때 국방을 강화하면서 사태를 관망하자는 신중한 태도를 취하였다.
1027년에 태자태사(太子太師)를 겸하였으며, 1031년 내사령(內史令)으로 치사(致仕)한 뒤 1041년(정종 7)에 죽었다.